正規表現とは、柔軟なパターンマッチを行うために、文字列のパターンを表現する手法です。
(正規表現を利用するために、babaさんの正規表現DLLである、BREGEXP.DLLを、利用させて頂いてます。BREGEXP.DLL は、ひまわりに梱包されていますが、この最新版は、http://www.hi-ho.ne.jp/babaq/bregexp.htmlから、入手できます。)
ここでは、正規表現について、詳しくは、書きません。ネットや、書籍を当たれば、それこそ星の数ほど資料がありますので、それらを参照してください。
正規表現の命令:
---正規表現 | ||
正規表現マッチ | ?を,?で | BREGEXP.DLL(m)を使って、文字列?を、正規表現?のパターンで、マッチして、結果をそれに返す。 |
正規表現区切る | ?を,?で | BREGEXP.DLL(split)を使って、文字列?を、正規表現?のパターンで、区切って、結果をそれに返す。 |
正規表現置換 | ?を,?で | BREGEXP.DLL(s)を使って、文字列?を、パターン?で置換し結果をそれに返す。 |
正規表現入換 | ?を,?で | BREGEXP.DLL(tr)を使って、文字列?を、パターン?で入換して結果をそれに返す。 |
一番簡単なサンプル:
こんな調子で、正規表現のパターンを指定します。
文字列は、『123;456;789;ABC;DEF』
文字列を、『;\d+;』で、正規表現マッチ。
それを、表示。
二番目に簡単なサンプル:
BREGEXP.DLLは、Perl互換の正規表現が利用できます。このサンプルでは、iスイッチを使って、大文字小文字の区別なしにパターンマッチします。
文字列は、『ABC;cde;EFG;』
文字列を、『m/;efg;/i』で、正規表現マッチ。
それを、表示。
三番目に簡単なサンプル:
次に、Perlでは、()で括ったパターンを、$1,$2,$3...で参照できるのですが、ひまわりでこれを使った場合、配列変数の#1、#2、#3・・・へ、値が得られます。ですから、この場合、それ#0には、通常のマッチした結果。それ#1に、()で括られたパターンが、得られたわけです。
文字列は、『abc;def;ghi;』
文字列を、『;(.+?);』で、正規表現マッチ。
それを、表示。結果:
;def;
def
四番目に簡単なサンプル:
これは、三番目のサンプルで説明したことを、わざとらしく書いてみただけです。
文字列は、『abc;def;ghi』
文字列を、『m/(.*);(.*);(.*)/』で、正規表現マッチ。
それ#1を、表示。’Perlの$1に相当
それ#2を、表示。’Perlの$2に相当
それ#3を、表示。’Perlの$3に相当結果:
abc
def
ghi
一番簡単なサンプル:
Perlで言うと、関数の split です。とにかく、パターンで区切って、「それ」配列に代入します。
文字列は、『abc;def;ghi』
文字列を、『;』で、正規表現区切る。
それを、表示。結果:
abc
def
ghi
一番簡単なサンプル:
Perlに詳しくない方のために、書いておくと、書式は、『s/正規表現パターン/置換文字列/オプション』です。オプション g は、グローバルマッチです。Perlの$1,$2も使えます。(下のサンプル参照)
文字列は、『abc;def;ghi』
文字列を、『s/;/,/g』で、正規表現置換。
それを、表示。結果:
abc,def,ghi
文字列は、『abc;def;ghi』
文字列を、『s/(.*);(.*);(.*)/"$1","$2","$3"/』で、正規表現置換。
それを、表示。結果:
"abc","def","ghi"
簡単なサンプル:
小文字を、大文字に変換するパターンです。
文字列は、『abc;def;ghi』
文字列を、『tr/a-z/A-Z/』で、正規表現入換。
それを、表示。結果:
ABC;DEF;GHI
ひらがなを、カタカナに変換するパターンです。
文字列は、『あ;い;う』
文字列を、『tr/あ-ん/ア-ン/』で、正規表現入換。
それを、表示。結果:
ア;イ;ウ