# 正規表現の利用

正規表現とは、柔軟なパターンマッチを行うために、文字列のパターンを表現する手法です。

（正規表現を利用するために、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+;』で、正規表現マッチ。 それを、表示。`

> こんな調子で、正規表現のパターンを指定します。

二番目に簡単なサンプル：

> `文字列は、『ABC;cde;EFG;』 文字列を、『m/;efg;/i』で、正規表現マッチ。 それを、表示。`

> BREGEXP.DLLは、Perl互換の正規表現が利用できます。このサンプルでは、iスイッチを使って、大文字小文字の区別なしにパターンマッチします。

三番目に簡単なサンプル：

> `文字列は、『abc;def;ghi;』 文字列を、『;(.+?);』で、正規表現マッチ。 それを、表示。`
> 結果： ;def; def

> 次に、Perlでは、()で括ったパターンを、$1,$2,$3...で参照できるのですが、ひまわりでこれを使った場合、配列変数の＃１、＃２、＃３・・・へ、値が得られます。ですから、この場合、それ＃０には、通常のマッチした結果。それ＃１に、（）で括られたパターンが、得られたわけです。

四番目に簡単なサンプル：

> `文字列は、『abc;def;ghi』 文字列を、『m/(.*);(.*);(.*)/』で、正規表現マッチ。 それ#1を、表示。’Perlの$1に相当 それ#2を、表示。’Perlの$2に相当 それ#3を、表示。’Perlの$3に相当`
> 結果： abc def ghi

> これは、三番目のサンプルで説明したことを、わざとらしく書いてみただけです。

## スプリット／区切る

一番簡単なサンプル：

> `文字列は、『abc;def;ghi』 文字列を、『;』で、正規表現区切る。 それを、表示。`
> 結果： abc def ghi

> Perlで言うと、関数の split です。とにかく、パターンで区切って、「それ」配列に代入します。

## 置換

一番簡単なサンプル：

> `文字列は、『abc;def;ghi』 文字列を、『s/;/,/g』で、正規表現置換。 それを、表示。`
> 結果： abc,def,ghi

> Perlに詳しくない方のために、書いておくと、書式は、『s/正規表現パターン/置換文字列/オプション』です。オプション g は、グローバルマッチです。Perlの$1,$2も使えます。（下のサンプル参照）

> `文字列は、『abc;def;ghi』 文字列を、『s/(.*);(.*);(.*)/"$1","$2","$3"/』で、正規表現置換。 それを、表示。`
> 結果： "abc","def","ghi"

## 入換

簡単なサンプル：

> `文字列は、『abc;def;ghi』 文字列を、『tr/a-z/A-Z/』で、正規表現入換。 それを、表示。`
> 結果： ABC;DEF;GHI

> 小文字を、大文字に変換するパターンです。

> `文字列は、『あ;い;う』 文字列を、『tr/あ-ん/ア-ン/』で、正規表現入換。 それを、表示。`
> 結果： ア;イ;ウ

> ひらがなを、カタカナに変換するパターンです。

戻る