2011-10-10 43 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()); 
}