私はかなり独特の問題があります。私は[some string][word boundary]
のようなパターンを見つけようとしています。簡体字、私のコードは次のとおりです。 bが一致しない
final Pattern pattern = Pattern.compile(Pattern.quote(someString) + "\\b");
final String value = someString + " ";
System.out.println(pattern.matcher(value).find());
私のロジックに関係なくsomeString
が何であるかの、true
これは常に出力すべきと言われます。しかし:
someString
が単語文字(例えば、 "ABC")で終わる場合、true
が出力されます。someString
が単語境界で終わる場合(例:「abc。」)、false
が出力されます。
何が起こっているのですか?私の現在の回避策は\b
の代わりに\W
を使用することですが、私はそれが意味するところは分かりません。
間はい、しかしabc.' 'で期間は' Pattern.quote(経由(正規表現の一部となるべき "ABC。") '。だから、パターンは「' abc.'になるべきそれに続く「abc.」とスペースの後に続く「単語境界」が続きます。 – Felix
@単語境界になる文字のためのフェリックス単語文字が前に付いた非単語文字でなければなりません。 –
ありがとう!「\ W」のような文字クラスのショートカットだったという印象を受けました。 – Felix