KAIHATSUGIKEN GROUP
******************************************************************************************
11 正規表現
*************************
正規表現とはパターンを書くときの表記法のことをいいます。
例えば
正規表現 マッチする文字列
suzuki "suzuki"
suzuki*n "suzukn""suzukiin""suzukiiin""suzukiiiin"
suzu(ki)* "suzu""suzuuki""suzukiki""suzukikiki""suzukikikiki"
suzu(ki)+ "suzuki""suzukiki""suzukikiki""suzukikikiki"
となります。
suzuki*n はsuzukの後の iが何回か続いてその次にnがあるような文字列とマッチします。
結局 * は何回か続いてと言う意味があります。
suzu(ki)*は()の中の部分を繰り返して・・・と言う意味です。
だから
suzu suzuki suzukiki suzukikiki とかになります。
+も繰り返しのメタ文字です。
*とか+とかをメタ文字と言います。
+は 一回以上の繰り返しを意味します。
suzuki suzukiki suzukikiki とかね・・・
aの次にbが何個かある
と言う場合に
ab*
と書くと
* は0回以上だからbが無くてもマッチしてしまいます。
a だけでもマッチすることになります。
そういうときは
ab+
とすると
ab abb abbb abbbb などがマッチします。
次に または〜
と言うときに使うのが | です。
ms-dosのときにパイプとかいっていたものと同じですけど
意味が全然違います。
suzuki|satou
だと suzuki又はsatouでマッチします。
(suzuki|satou)(haruna|katano) にすると
suzuki又はsatouの次にharuna又はkatanoが続くような文字列とマッチします。
suzuki haruna suzuki katano satou haruna satou katano
と言う4通りの組み合わせがあります。
()をとってしまうと
suzuki|satou|haruna|katano にしてしまうと
suzuki又はsatou又はharuna又はkatanoという意味になってしまいます。
これらを組み合わせると 複雑な組み合わせが出来ます。
例えば
(suzuki|satou)*
にすると
suzuki又はsatouが0回以上繰り返すという意味になります。
0回なら ""とマッチします。
1回なら "suzuki" "satou"
2回なら "suzukisuzuki" "satousatou" "suzukisatou" "satousuzuki"
の4通りになります。
********************************