2010-12-04 114 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和一個數字