2

単語のすべての出現に一致させたい場合、最後の単語fooを使用するか、使用しませんか? \bfoo\bどちらも機能しているようですが、何が適切ですか?

4

3 に答える 3

8

両方を使用する必要があります。最後\bがないと、次のような文字列に一致することになります。

"I love football"
"You foolishly left off your second word boundary"
于 2013-02-05T23:18:14.023 に答える
4

ただし、単語境界\bの定義は の定義に基づいていることに注意してください\w。単語境界は、非単語文字と単語文字の間にある場合に定義されます。ここで、単語文字は によって定義され\wます。\wfor ASCII 文字列は と同等[A-Za-z0-9_]であるため、次のようなケース\bfoo\b拒否します。

foo123
3foo
foo_bar
fun_foo

数字 と_は単語の文字と見なされるため、 のすぐ隣にある場合foo、単語の境界を形成しないため\bfoo\b、上記のいずれとも一致しません。

于 2013-02-06T01:19:24.827 に答える
2

次の入力があるとします。

foo foobar

この正規表現は、最初のfoo:

\bfoo\b

この正規表現は、最初と in にも一致foofoobarます。

\bfoo
于 2013-02-06T00:04:14.187 に答える