正規表現のバリエーションが非常に多いのはなぜですか?[閉まっている]


14

今日、プロジェクトのソースコードを確認したところ、各行の最後に不要な「スペース」と「タブ」がたくさんあることがわかりました。そこで、正規表現でそれらを削除することにしました。

しかし、コマンドsed -i '/\s+$/d'が機能しないことがわかりました。コマンドをに変更するまでsee -ri '/\s+$/d'、それは私の期待通りに機能しました。のマニュアルから、拡張正規表現を呼び出すsedと書かれてい-rます。

私は混乱している、なぜ多くの正規表現の亜種があるのですか?vim / emacs / perl / sed正規表現のように。正規表現が独自のユーザーインターフェイスを提供できないのはなぜですか?

回答:


19

歴史的な理由から。「正規表現」構文の定義はありません。正規表現自体の概念は、それを正式に記述する実際の構文とは関係ありません。人々は同じことを異なる方法で表現しているため、異なるスタイルの正規表現構文を使用しています。

ただし、最近ではほとんど2つのグループの定義があることがわかります。

  1. 基本(BRE)および拡張正規表現(ERE)を指定する POSIX正規表現。混乱は、たとえば、基本的な正規表現\( \)がグループを示すために使用され、拡張正規表現( )がそのために使用されるところから始まります。

  2. Perlベースの正規表現。Perlの正規表現は、より一貫性のある構文を定義します。たとえば、バックスラッシュは常に英数字以外の文字をエスケープします。Perlの正規表現構文は、最近ではJavaからRubyまで、多くの一般的なプログラミング言語で使用されています。

あなたは、チェックアウトすることができます正規表現の構文上のWikipediaの記事をより多くの情報のため。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.