2009-05-07 39 views

Trả lời

9
import java.util.regex.*; 
try { 
    Pattern regex = Pattern.compile("(\\d\\{1-3\\})\\.(\\d\\{1-3\\})\\.(\\d\\{1-3\\})\\.(\\d\\{1-3\\})"); 
    Matcher regexMatcher = regex.matcher(subjectString); 
    while (regexMatcher.find()) { 
     for (int i = 1; i <= regexMatcher.groupCount(); i++) { 
      // matched text: regexMatcher.group(i) 
      // match start: regexMatcher.start(i) 
      // match end: regexMatcher.end(i) 
     } 
    } 
} catch (PatternSyntaxException ex) { 
    // Syntax error in the regular expression 
} 
+0

Bạn không nên cần phải nắm bắt PatternSyntaxException nếu regex của bạn được mã hóa cứng (giống như nó). Nếu có lỗi trong cú pháp, bạn sẽ thấy nó lần đầu tiên bạn chạy chương trình. –

+0

@mmyers: lực lượng của thói quen tôi giả định, nhưng bạn là đúng. –

+0

Không nên bộ đếm bắt đầu bằng 0? –

3

Nếu bạn sử dụng Pattern và Matcher để làm regex của bạn, sau đó bạn có thể yêu cầu Matcher cho từng nhóm bằng cách sử dụng phương pháp group(int group)

Vì vậy:

Pattern p = Pattern.compile("(\\d{1-3}).(\\d{1-3}).(\\d{1-3}).(\\d{1-3})"); 
Matcher m = p.matcher("127.0.0.1"); 
if (m.matches()) { 
    System.out.print(m.group(1)); 
    // m.group(0) is the entire matched item, not the first group. 
    // etc... 
} 
Các vấn đề liên quan