2

正規表現について読んでいるスクリプトでは、次のように書かれています。

  • '\b'単語の前枠に当たる
  • '\<'単語の先頭に当たる

では、次の使用の違いは何ですか

  • \b以上\<
  • \b以上\>
4

3 に答える 3

4

\bのよう\<\>結合されます:

  • \<単語の先頭に一致し、
  • \>単語の末尾に一致し、
  • \b単語の先頭または末尾に一致し、
  • \B単語の先頭または末尾を除いて一致します。
于 2012-04-13T18:53:08.967 に答える
4

私は私に次のman grepことを教えてくれます\b

記号 \<\> はそれぞれ、単語の先頭と末尾の空の文字列に一致します。記号\bは、単語の端にある空の文字列に一致します [...]

したがって、一致する場所は\bfoo\bどこでも\<foo\>一致します。

一方で、非常に多くの正規表現のバリエーションがあり、あなたが何をしているのかわかりにくい\b.

于 2012-04-13T18:52:14.437 に答える
3

ソースが間違っているか、少なくとも不完全なようです。前面だけでなく、任意の\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))
于 2012-04-13T20:07:11.227 に答える