【发布时间】:2009-05-07 19:56:50
【问题描述】:
所以我有一个 IP 地址作为字符串。
我有这个正则表达式(\d{1-3})\.(\d{1-3})\.(\d{1-3})\.(\d{1-3})
如何打印匹配组?
谢谢!
【问题讨论】:
所以我有一个 IP 地址作为字符串。
我有这个正则表达式(\d{1-3})\.(\d{1-3})\.(\d{1-3})\.(\d{1-3})
如何打印匹配组?
谢谢!
【问题讨论】:
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
}
【讨论】:
如果你使用 Pattern 和 Matcher 来做你的正则表达式,那么你可以使用 group(int group) 方法询问每个组的 Matcher
所以:
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...
}
【讨论】: