正则表达式匹配单词,后跟零或更多数字?

时间:2010-12-04 11:32:54

标签: java regex

我需要一个正则表达式来匹配从特定WORD开始的行,后跟零个或多个数字,然后再没有其他数字。到目前为止,我已经尝试过这个:

^WORD\d{0,}

和此:

^WORD[0-9]*

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

3 个答案:

答案 0 :(得分:2)

我忘记了$行尾字符,因此匹配:

WORD1
WORD11
WORD11a

这很有效,很好:

^WORD\\d*$

答案 1 :(得分:0)

问题可能是^匹配输入的开头(我怀疑你只找到匹配,如果第一行匹配),而不是一行的开头。

您可以尝试使用肯定的后观,说匹配应该在输入开头(^)或新行(\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"

答案 2 :(得分:0)

&#34;(\\ AWORD [\\ d] * $)&#34; 这应该可以解决问题。输入的开头,你的WORD和一个数字