このコマンドの GNU 実装では、以下をfind
使用します。「Emacs正規表現」デフォルトは対応する述-regex
部です。などのオプションに変更できますposix-egrep
。
以外の各エンジンの違いは何ですか?通事論?
たとえば、パフォーマンス、シンプルさの点でそれぞれ異なりますか?
(個人の好みを超えて)特定のシナリオで特定のエンジンを使用する必要がありますか?
バージョンfind
はfind (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
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正規表現方言への言及はありません。