1

私の言うことができることとRegexPalの言うことによると、私がテストしている完全な文字列(その右端の部分のみ)と一致しない正規表現があります。ただし、matcher.matches()trueを返します!

では、java.util.regexマッチャーが実際に文字列と完全に一致するかどうかを判断するための最も信頼できる方法は何ですか?

また、次のように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

matches()がtrueを返すことは、いくつかの一致があることを意味します。それが「完全な」文字列であるかどうかは、単に正規表現が何であるかに依存します。例えば

"a"

次のすべてに一致します

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

完全な文字列に一致させる場合、正規表現はEgで始まり、 Eg^で終わる必要があります。$

"^a$"

一致"a"しますが、次のいずれもありません

"abb"
"bab"
"bba"
于 2011-10-10T00:14:41.567 に答える