忍者ブログ
かんたんな正規表現講座
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


正規表現の起源は、いずれも理論計算機科学の一分野であるオートマトン理論や形式言語理論にみることができる。これらは計算のモデル化(オートマトン)や形式言語の分類方法などを扱う学術分野である。数学者のスティーヴン・クリーネは1950年代に正規集合と呼ばれる独自の数学的表記法を用い、これらの分野のモデルを記述した。ケン・トンプソンはテキストファイル中のパターンにマッチさせる手段として、この表記法をエディタQEDに導入した。彼はこの機能をUNIXのエディタedにも追加し、後に一般的な検索ツールであるgrepの正規表現へと受け継がれていった(grepはedエディタの正規表現検索コマンドg/re/pから派生した単語である。reは正規表現(regular expression)の頭文字。)。これ以降、トンプソンの正規表現の適用にならい、多くのUNIX系のツールがこの方法を採用した(例えばexpr、awk、Emacs、vi、lex、Perlなど)。

PerlとTclの正規表現はHenry Spencerによって書かれたものから派生している(Perlは後にSpencerの正規表現を拡張し、多くの機能を追加した)。Philip HazelはPerlの正規表現とほぼ互換のものを実装する試みとしてPerl Compatible Regular Expressions(PCRE)を開発した。これはPHPやApacheなどといった新しいツールで使用されている。Perl 6では、正規表現の機能を改善してその適用範囲や能力を高め、解析表現文法を定義できるようにする努力がなされた。この結果として、Perl 6文法の定義だけでなくプログラマのツールとしても使用できる、Perl 6 rulesと呼ばれる小言語が生み出された。これらの規則は正規表現の機能のすべてを保持しながら、副規則を通して再帰下降構文解析のBNFスタイルの定義を行うことができる。
 

PR

しばしばパターンと呼ばれる正規表現は、文字列群を表現する表現法である。通常、全ての要素をリストせずに文字列群を簡潔に表現するのに用いられる。例えば、HandelHändelHaendel という三つの文字列を含む集合は "H(ä|ae?)ndel" というパターンで表現できる(あるいは、パターンは個々の三つの文字列にマッチすると言われる)。ほとんどの形式では、もし特定の集合にマッチする何らかの正規表現が存在すれば、無限の数のそのような表現がある。ほとんどの形式では正規表現を構築するのに次の演算子を提供している。

選言
縦棒は選択肢を区切る。例えば、"gray|grey" は gray または grey にマッチし、これは普通 "gr(a|e)y" に短縮される。
グループ分け
丸括弧はスコープと演算子の優先順位を定義するのに用いられる。例えば、"gr(a|e)y" では "(a|e)" の部分で a または e を示し、全体で gray または grey にマッチする。
WIKIPWDIAより


正規表現(せいきひょうげん、regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。正則表現(せいそくひょうげん)とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。

もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。形式言語理論では、形式言語が正規言語であることと正規表現によって表せることは同値である。

wikiより

正規表現とは、記号を使って、文字を一般化して表現する事です

簡単に例えて言えば、たとえば、数学で習いました

y=3x^2+2x+4
y=5x^2+6x
y=6x^2+2x+8

2次関数の式ですね
これらは、変数をつかって、

y=ax^2+bx+c

というように、一般式というものとして表現されます


同じように、正規表現では次の文

私はりんごが好きです
ボクはみかんが好きです

この2文を

△△は○○○が好きです

といった風に表現しようという事になります
忍者ブログ [PR]

material by: