形式:column1 = emp_no 提炼: 键:第1列 值:emp_no
第一个代码:
String p1 = "column1 = emp_no";
String propertyRegexp = "^\\s*(\\w+)\\s*=\\s*(\\w+)\\s*$";
Pattern pattern = Pattern.compile(propertyRegexp);
Matcher matcher = pattern.matcher(p1);
System.out.println("groupCount: " + matcher.groupCount());
if(matcher.matches()) {
for(int i = 0; i < matcher.groupCount(); i++) {
System.out.println(i + ": " + matcher.group(i));
}
}
第一个结果:
groupCount: 2
0: column1 = emp_no
1: column1
不可能找到第二个结果。 第二个括号更改为双括号。
第二个代码:
String p1 = "column1 = emp_no";
String propertyRegexp = "^\\s*(\\w+)\\s*=\\s*((\\w+))\\s*$";
Pattern pattern = Pattern.compile(propertyRegexp);
Matcher matcher = pattern.matcher(p1);
System.out.println("groupCount: " + matcher.groupCount());
if(matcher.matches()) {
for(int i = 0; i < matcher.groupCount(); i++) {
System.out.println(i + ": " + matcher.group(i));
}
}
第二个结果:
groupCount: 3
0: column1 = emp_no
1: column1
2: emp_no
我想要输出结果。 第一个和第二个代码中的正则表达式有什么不同?
最佳答案
将您的代码更改为。
String p1 = "column1 = emp_no";
String propertyRegexp = "^\\s*(\\w+)\\s*=\\s*(\\w+)\\s*$";
Pattern pattern = Pattern.compile(propertyRegexp);
Matcher matcher = pattern.matcher(p1);
System.out.println("groupCount: " + matcher.groupCount());
if(matcher.matches()) {
for(int i = 1; i <= matcher.groupCount(); i++) { //see the changes
System.out.println(i + ": " + matcher.group(i));
}
}
第 0 组始终包含整个匹配的字符串。
实际组从索引 1 开始
看看这个 live demo
关于java正则表达式读取属性,双括号有什么不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31874829/