验证正则表达式是否匹配

时间:2011-10-10 00:01:58

标签: java matcher

我有一个正则表达式,根据我所知道的和RegexPal所说的,与我正在测试的完整字符串(仅最右边的部分)不匹配。但是,matcher.matches()返回true!

那么,确定java.util.regex Matcher是否与字符串完全匹配的最可靠方法是什么?

另外,假设想要使用matcher.find(),如下所示:

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

有没有办法实施“找到匹配”条件检查?

3 个答案:

答案 0 :(得分:2)

请勿使用find,请使用matches

答案 1 :(得分:1)

好吧,我从未让matches()无效,但您可以使用find(),然后使用

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

我认为你不需要if,因为while(matcher.find())应该检查,但如果你这样做......

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

答案 2 :(得分:1)

matches()返回true意味着有一些匹配。是否是“完整”字符串,只取决于你的正则表达式是什么。 E.g。

"a"

将匹配以下所有

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

如果您希望匹配完整字符串,则您的正则表达式必须以^开头,并以$结尾 E.g。

"^a$"

将匹配"a",但不符合以下

"abb"
"bab"
"bba"