java正则表达式读取属性,双括号有什么不同
表格:第1列=环境管理计划编号 摘录: 关键词:专栏1 价值:emp_编号 第一个代码:java正则表达式读取属性,双括号有什么不同,java,regex,Java,Regex,表格:第1列=环境管理计划编号 摘录: 关键词:专栏1 价值:emp_编号 第一个代码: 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("gr
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));
}
}
不可能找到第二个结果。
第二个括号变为双括号
第二个代码:
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));
}
}
我希望结果被输出。
第一个和第二个代码中的正则表达式有什么不同?将代码更改为
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));
}
}
String p1=“column1=emp\u no”;
字符串propertyRegexp=“^\\s*(\\w+)\\s*=\\s*(\\w+\\s*$”;
Pattern=Pattern.compile(propertyRegexp);
匹配器匹配器=模式匹配器(p1);
System.out.println(“groupCount:+matcher.groupCount());
if(matcher.matches()){
对于(int i=1;i正则表达式中的组从0索引,但正则表达式引擎自动添加组0以表示整个匹配。您的组被索引为1
和2
所以您的第一次尝试几乎是正确的,您只需从
for(int i = 0; i < matcher.groupCount(); i++) {
for(int i=0;i
到
for(int i=1;i
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));
}
}
for(int i = 0; i < matcher.groupCount(); i++) {
for(int i = 1; i <= matcher.groupCount(); i++) {
// ^ ^