1

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

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

另外,假设一个人想要使用 matcher.find() 如下:

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

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

4

3 回答 3

2

不使用find,使用matches

于 2011-10-10T00:09:38.177 回答
1

好吧,我从来matches()没有工作过,但你可以使用find(),然后使用

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

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

if(matcher.find()){
    do{
        //whatever
    } while(matcher.find());
}
于 2011-10-10T00:13:55.577 回答
1

match() 返回 true 意味着有一些匹配。无论它是否是“完整”字符串,都取决于您的正则表达式是什么。例如

"a"

将匹配以下所有内容

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

如果你想匹配完整的字符串,你的正则表达式必须以 Eg开头^和结尾$

"^a$"

会匹配"a",但以下都不匹配

"abb"
"bab"
"bba"
于 2011-10-10T00:14:41.567 回答