我试图在java中找到一个正确的正则表达式来检测大内容中的所有版本1。我只关心版本1,版本1.0或版本1.0,而不是1.1。然后,测试字符串可以跟随任何其他字符或行尾。
我如何在java中做到这一点?
提前致谢
String regex="(version)(\\s)(1|1\\.0)";
Pattern p = Pattern.compile(regex);
Matcher m = null;
String testString1="version 1";
m = p.matcher(testString1);
System.out.println (m.find());
String testString2="version 1.0";
m = p.matcher(testString2);
System.out.println (m.find());
String testString3="version 1.1"; // should not match
m = p.matcher(testString3);
System.out.println (m.find());
答案 0 :(得分:1)
如果您在较长的字符串中有version
个字符串,请使用此前瞻性正则表达式:
\bversion\s+1(?:\.0)?(?=\s|$)
在Java中:
final String regex = "\\bversion\\s+1(?:\\.0)?(?=\\s|$)";
(?=\\s|$)
是一个积极的先行者,断言我们在版本号之后有一个空格或行结尾。
答案 1 :(得分:0)
提案:
"(version)\\s(1(\\.0)?)([^\\.0-9].*|$)"