気ままなブログスマートフォン用の表示で見る気ままなブログこの広告は、90日以上更新していないブログに表示しています。(ERE)オープンソースPOSIX正規表現には、grepコマンドやsedコマンドで使用できる基本正規表現(BRE)と、egrepコマンドやawkコマンドで使用できる拡張正規表現(ERE)があります。一般的にはどういうわけかより多くの特殊文字を持つ正規表現が好まれているようで、BREよりもERE、EREよりもPerlの正規表現の方が人気があるように思います。BREとEREの違いをきっちりと理解されている人はそれほど多くないのではないかと思います。BREとEREの違い下記はBREとEREで使用できる正規表現の一覧です。supported)見ていただければわかるように、EREで使えてBREで使えないのは、「+」、「?」、「|」の3つです。「+」は「{1,}」、「?」は「{0,1}」に置き換えることができるので、実際にEREで使えてBREで使えないのは、「|」のみです。sedでは、BREであっても「\|」を用いることができるので、ほとんど差はありません。次に通常の文字として認識させたい場合にエスケープが必要となる特殊文字を示します。$BREよりもEREの方がかなり少ないですね。これがBREがEREよりも表現力に乏しいと思われている理由ではないでしょうか。BREとEREの使い分けここまで読んでいただいて、BREもEREも機能面で大差はないことを理解していただけたかと思います。それでは、BREとEREをどのように使い分けるのがよいでしょうか。コマンドラインで使用する場合コマンドラインで使用する場合は、どちらかと言うとEREをおすすめします。以下にその理由を説明します。例として、「abcまたはdef」をBREとEREで書くと、それぞれ下記のようになります。abc|def続いての例として、abcの3個から5個をBREとEREで書くと、それぞれ下記のようになります。abc{3,5}どちらの例においても、BREよりもEREの方がよりも短くなっています。読みやすいと思います。それは、間違えにくいことでもあります。コマンドラインで使用する場合は、どちらかと言うとBREよりもEREをおすすめします。スクリプト内で使用する場合スクリプト内で使用する場合は、BREをおすすめします。パターン内にシェル変数を使う場合、一般的には特殊文字をエスケープする必要がありますが、BREの場合はエスケープが必要なのは「.[\*^$」の6文字ですが、EREの場合は「.[\()*+?{|^$」の12文字もあります。エスケープ用のシェル関数を定義すればよいだけのことですが、文字数が少ない方がシンプルかつ高速です。取り除いて「$FILE」に書き出しています。入ってきた場合にうまく動作しません。2.23が近日中にリリースされる見込みとなりました。GN...2015-11-03正規表現の実装の難しさ正規表現はPOSIXで定義されています。2.22が近日中にリリースされる見込みとなりました。2.23リリース正規表現の実装の難しさ月別アーカイブはてなブログをはじめよう!entreeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。