正規表現について読んでいるスクリプトでは、次のように書かれています。
'\b'
単語の前枠に当たる'\<'
単語の先頭に当たる
では、次の使用の違いは何ですか
\b
以上\<
\b
以上\>
\b
のよう\<
に\>
結合されます:
\<
単語の先頭に一致し、\>
単語の末尾に一致し、\b
単語の先頭または末尾に一致し、\B
単語の先頭または末尾を除いて一致します。私は私に次のman grep
ことを教えてくれます\b
:
記号
\<
と\>
はそれぞれ、単語の先頭と末尾の空の文字列に一致します。記号\b
は、単語の端にある空の文字列に一致します [...]
したがって、一致する場所は\bfoo\b
どこでも\<foo\>
一致します。
一方で、非常に多くの正規表現のバリエーションがあり、あなたが何をしているのかわかりにくい\b
.
ソースが間違っているか、少なくとも不完全なようです。前面だけでなく、任意の\b
境界線に一致します。見積もり:man grep
記号\<
と\>
はそれぞれ、単語の先頭と末尾の空の文字列に一致します。記号\b
は、単語の端にある空の文字列に一致します
grep
はと\b
同等grep
です\(\<\|\>\)
Perl の正規表現に慣れている場合は、
grep
は Perlの\<
ものと同等です(?<!\w)(?=\w)
grep
は Perlの\>
ものと同等です(?<=\w)(?!\w)
grep
は Perlの\b
ものと同等です\b
grep
は Perlの\b
ものと同等です(?:(?<!\w)(?=\w)|(?<=\w)(?!\w))