2010-09-20 28 views
6

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ì?

Trả lời

8

Thay đổi regex để abc(.*)def(.*)pqr(.*)xyz và dấu ngoặc đơn sẽ tự động bị ràng buộc để

Xem 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 
1

Đâ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.

Các vấn đề liên quan