我有一个正则表达式,根据我所知道的和RegexPal所说的,与我正在测试的完整字符串(仅最右边的部分)不匹配。但是,matcher.matches()
返回true!
那么,确定java.util.regex Matcher是否与字符串完全匹配的最可靠方法是什么?
另外,假设想要使用matcher.find(),如下所示:
if (a match was found)
{
while (matcher.find())
{
// Do whatever
}
]
有没有办法实施“找到匹配”条件检查?
答案 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"