Vì vậy, tôi có một địa chỉ IP dưới dạng một chuỗi. Tôi có regex này (\d{1-3})\.(\d{1-3})\.(\d{1-3})\.(\d{1-3})
Làm cách nào để in các nhóm phù hợp?In các đối sánh regex trong java
Cảm ơn!
Vì vậy, tôi có một địa chỉ IP dưới dạng một chuỗi. Tôi có regex này (\d{1-3})\.(\d{1-3})\.(\d{1-3})\.(\d{1-3})
Làm cách nào để in các nhóm phù hợp?In các đối sánh regex trong java
Cảm ơn!
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
}
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...
}
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. –
@mmyers: lực lượng của thói quen tôi giả định, nhưng bạn là đúng. –
Không nên bộ đếm bắt đầu bằng 0? –