emacsとposix-egrepのような正規表現エンジンの違いは何ですか?

emacsとposix-egrepのような正規表現エンジンの違いは何ですか?

このコマンドの GNU 実装では、以下をfind使用します。「Emacs正規表現」デフォルトは対応する述-regex部です。などのオプションに変更できますposix-egrep

以外の各エンジンの違いは何ですか?通事論

たとえば、パフォーマンス、シンプルさの点でそれぞれ異なりますか?

(個人の好みを超えて)特定のシナリオで特定のエンジンを使用する必要がありますか?

バージョンfindfind (GNU findutils) 4.7.0-git

答え1

難しい話題で質問しました。

私があなたにお勧めできる最高の資料は、元コンピュータサイエンス教授(オーストラリアのモナッシュ大学)で有名なPerlの開発者であり、著者であるDamian Conwayが書いた「Everything You Know About Regular Expressions Is Wrong」という本です。 PDF/ビデオ:

https://slides.yowconference.com/yowwest2015/Conway-EverythingYouKnowAboutRegexesIsWrong.pdf

https://youtu.be/ubvSjW6Nyqk

Conwayは、プレゼンテーション/PDFにBRE、ERE、EMACS、VIM、PCRE、およびPSIX(「PERL6」の最後のバージョン、最近のRakuに名前が変更されました)を含む「正規表現構文の6つの主要な方言」があると述べています。

たとえば、PDFの13ページでは、ConwayはVIM / EMACSエディタ方言で書かれた正規表現を表示します。

/abc\|abx/

ERE、PCRE、PERL6(RAKUなど)では、実際には次のように書かれています。

/abc|abx/

他の多くの違いが言及されています。詳しくは、プレゼンテーション/PDFをご覧ください。

警告:リンクhttps://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.htmlStackExchange で権威ある正規表現参照として引用されました。しかし、実際にhtmlページには、PERL6(RAKUとも呼ばれます)正規表現方言や広く配布されたPCRE正規表現方言への言及はありません。

関連情報