Tôi phù hợp với một regex của mẫuregex Java có phần chưa từng có
abc.*def.*pqr.*xyz
Bây giờ chuỗi abc123def456pqr789xyz
sẽ phù hợp với mô hình. Tôi muốn tìm các chuỗi 123, 456, 789 với trình ghép.
Cách dễ nhất để thực hiện việc này là gì?
Tôi phù hợp với một regex của mẫuregex Java có phần chưa từng có
abc.*def.*pqr.*xyz
Bây giờ chuỗi abc123def456pqr789xyz
sẽ phù hợp với mô hình. Tôi muốn tìm các chuỗi 123, 456, 789 với trình ghép.
Cách dễ nhất để thực hiện việc này là gì?
Thay đổi regex để abc(.*)def(.*)pqr(.*)xyz
và dấu ngoặc đơn sẽ tự động bị ràng buộc để
$1
qua $3
nếu bạn sử dụng String.replaceAll() hoặcXem tài liệu của Pattern class, đặc biệt là Groups and Capturing, để biết thêm thông tin.
Sample Code:
final String needle = "abc(.*)def(.*)pqr(.*)xyz";
final String hayStack = "abcXdefYpqrZxyz";
// Use $ variables in String.replaceAll()
System.out.println(hayStack.replaceAll(needle, "_$1_$2_$3_"));
// Output: _X_Y_Z_
// Use Matcher groups:
final Matcher matcher = Pattern.compile(needle).matcher(hayStack);
while(matcher.find()){
System.out.println(
"A: " + matcher.group(1) +
", B: " + matcher.group(2) +
", C: " + matcher.group(3)
);
}
// Output: A: X, B: Y, C: Z
Đây là một regex mà có thể làm những gì bạn cần.
abc(\\d*)def(\\d*)pqr(\\d*)xyz
Nhưng, chúng ta cần có nhiều ví dụ hơn về chuỗi đầu vào và nội dung cần khớp.