2011-10-10 37 views
1

我有一個正則表達式,根據我所知道的以及RegexPal所說的,與我正在測試的完整字符串(僅其最右邊部分)不匹配。但是,matcher.matches()返回true!驗證正則表達式匹配

那麼,確定java.util.regex匹配器是否實際完全匹配字符串的最可靠方法是什麼?

而且,假設一個想要使用matcher.find()如下:

if (a match was found) 
{ 
    while (matcher.find()) 
    { 
     // Do whatever 
    } 
] 

是否有實現的任何方式「找到匹配」的條件檢查?

回答

1

matches()返回true將意味着有一些匹配。無論是否爲「完整」字符串,只取決於您的正則表達式。 例如

"a" 

將匹配以下所有

"a" 
"abb" 
"bab" 
"bba" 

如果你正在尋找匹配完整的字符串,您正則表達式必須^開始和$ 例如結束

"^a$" 

將匹配"a",但沒有以下

"abb" 
"bab" 
"bba" 
2

請勿使用find,請使用matches

1

嗯,我從來沒有matches()不行,但你可以使用find(),然後用

matcher.start()==0&&matcher.end()==string.length() 

我不認爲你需要的,如果,因爲while(matcher.find())應該檢查一下,但如果這樣做...

if(matcher.find()){ 
    do{ 
     //whatever 
    } while(matcher.find()); 
}