用于检测带有可选句点的版本的Java正则表达式

时间:2017-01-17 20:58:03

标签: java regex

我试图在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());

2 个答案:

答案 0 :(得分:1)

如果您在较长的字符串中有version个字符串,请使用此前瞻性正则表达式:

\bversion\s+1(?:\.0)?(?=\s|$)

RegEx Demo

在Java中:

final String regex = "\\bversion\\s+1(?:\\.0)?(?=\\s|$)";

(?=\\s|$)是一个积极的先行者,断言我们在版本号之后有一个空格或行结尾。

答案 1 :(得分:0)

提案:

"(version)\\s(1(\\.0)?)([^\\.0-9].*|$)"
  1. 字符串“version”需要存在
  2. 后跟任何空格
  3. 然后单个“1”
  4. 可选地后跟“.0”
  5. 和下一个字符(不能是“。”或任何数字(认为1.01被禁止,以及1.0.1))或(是字符串的结尾)