Java 如何使用正则表达式提取字符串的一部分
我正在尝试提取最后三个字符串,即05、06、07。然而,我的正则表达式正以另一种方式工作,即提取前三个字符串。有人能帮我纠正代码中的错误吗Java 如何使用正则表达式提取字符串的一部分,java,regex,Java,Regex,我正在尝试提取最后三个字符串,即05、06、07。然而,我的正则表达式正以另一种方式工作,即提取前三个字符串。有人能帮我纠正代码中的错误吗 Pattern p = Pattern.compile("^((?:[^,]+,){2}(?:[^,]+)).+$"); String line = "CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,05,06,07"; Matcher m = p.matcher(line); String result; if (
Pattern p = Pattern.compile("^((?:[^,]+,){2}(?:[^,]+)).+$");
String line = "CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,05,06,07";
Matcher m = p.matcher(line);
String result;
if (m.matches()) {
result = m.group(1);
}
System.out.println(result);
我的当前输出:
CgIn,f,CgIn.util:srv2
05,06,07
预期输出:
CgIn,f,CgIn.util:srv2
05,06,07
你可以把它修好
Pattern p = Pattern.compile("[^,]*(?:,[^,]*){2}$");
String line = "CgIn,f,CgIn.util:srv2,1,11.65,42,42,42,42,04,05,06,07";
Matcher m = p.matcher(line);
String result = "";
if (m.find()) {
result = m.group(0);
}
System.out.println(result);
见
正则表达式是
[^,]*(?:,[^,]*){2}$
看
图案细节
-0+字符,而不是[^,]*
,
-2次重复(?:,[^,]*){2}
-逗号,
-0+字符,而不是[^,]*
,
-字符串结束$
Matcher#find()
与此正则表达式一起使用,以查找部分匹配