【问题标题】:Regex to match word, followed by zero or more digits?正则表达式匹配单词,后跟零个或多个数字?
【发布时间】:2014-07-16 00:25:09
【问题描述】:

我需要一个正则表达式来匹配以特定 WORD 开头的行,后跟零个或多个数字,然后仅此而已。到目前为止,我已经尝试过:

^WORD\d{0,}

还有这个:

^WORD[0-9]*

但它没有按预期工作:它也匹配像 WORD11a 这样的行,这是我不想要的。

【问题讨论】:

  • 定义“不能按预期工作”。什么不应该匹配?什么不匹配?
  • 根据您提供的信息,这似乎是正确的。描述它是如何失败的。

标签: java regex


【解决方案1】:

我忘记了$ 行尾字符,所以它匹配:

WORD1
WORD11
WORD11a

这行得通,很好:

^WORD\\d*$

【讨论】:

  • 我想这取决于你如何使用它。它似乎在 this case 中不起作用。
【解决方案2】:

问题可能是 ^ 匹配输入的开头(我怀疑您只有在第一行匹配时才找到匹配项),而不是一行的开头。

您可以尝试使用积极的回溯表示匹配应该在输入开始 (^) 或新行 (\n) 之前:

String input = "hello156\n"+
               "world\n" +
               "hello\n" +
               "hell55\n";

Pattern p = Pattern.compile("(?<=^|\n)hello\\d*");
Matcher m = p.matcher(input);
while (m.find())
    System.out.println("\"" + m.group() + "\"");

打印:

"hello156"
"hello"

【讨论】:

    【解决方案3】:

    "(\\AWORD[\\d]*$)" 这应该可以解决问题。输入的开头、您的 WORD 和一个数字

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多