gpt4 book ai didi

java正则表达式读取属性,双括号有什么不同

转载 作者:行者123 更新时间:2023-11-30 06:13:25 25 4
gpt4 key购买 nike

形式: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com