Javascript の正規表現構文には、単語境界が 1 つしかありません: \b
.
Vim の正規表現構文には、(\<
単語の開始) と\>
(単語の終了) の 2 つがあります。
vimスタイルの単語境界で達成できるが、javascriptスタイルでは達成できなかった検索の例を誰か教えてもらえますか?
それとも、単一の単語境界を持つ正規表現構文でも同じように機能しますが、開始境界と終了境界を持つことには他の利点がありますか?
Javascript の正規表現構文には、単語境界が 1 つしかありません: \b
.
Vim の正規表現構文には、(\<
単語の開始) と\>
(単語の終了) の 2 つがあります。
vimスタイルの単語境界で達成できるが、javascriptスタイルでは達成できなかった検索の例を誰か教えてもらえますか?
それとも、単一の単語境界を持つ正規表現構文でも同じように機能しますが、開始境界と終了境界を持つことには他の利点がありますか?
Vim で使用される構文は、正規表現の最初の実世界での実装の 1 つである ed から取得する ex から取得する vi に由来します。(はい、そのタイムラインには穴があります。)
多くのプログラミング言語 (JavaScript を含む) で使用される構文は、Perl から直接派生しています。
vi (およびその後の他のクローン) と Perl (およびその後の PCRE) の両方が POSIX 標準に多くの機能を追加しましたが、残念ながら各実装は独自の道をたどりました。ツリーの Perl/JavaScript/PCRE ブランチは、ed/sed/ex/vi/Vim ブランチよりもかなり遅れて開始されました。
だから私はあなたの質問を次のように再構成します:
Perl、JavaScript、および PCRE は、より古く、より確立された実装には 2 つの単語境界があるのに、なぜ単一の単語境界を持つことを選択したのですか?