2010-12-04 34 views
1

我需要一个正则表达式来匹配以特定的WORD开头的行,然后是零个或多个数字,然后就是更多。到目前为止,我已经试过这样:正则表达式匹配单词,然后是零个或多个数字?

^WORD\d{0,} 

这:

^WORD[0-9]* 

但预期它不工作:它也像匹配线WORD11a,我不想要的。

+4

定义“不按预期工作”。什么搭配不应该?什么不符合,应该? – 2010-12-04 11:35:06

+1

鉴于您提供的信息,这似乎是正确的。描述它是如何失败的。 – 2010-12-04 11:35:29

回答

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

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

WORD1 
WORD11 
WORD11a 

这个工作,只是罚款:

^WORD\\d*$ 
0

“(\\ AWORD [\\ d * $)” 这应该做的伎俩。输入开始,你的WORD和一个数字

相关问题