みなさん こんにちわ
連想配列にはまだいろいろ使い道があるのですが、先へ進みましょう。最後の大物が「正規表現 Regular Expression」です。
正規表現は「データ(の特徴)を記述する」ための方便です。正規表現がなくても、ある程度データの特徴を記述する方法はあります。例えば、第1フィールドのデータが空か否か、0か非0か、特定の文字列と一致するかなどは、それぞれ次のように表現できます。
$1 == ""
$1 == 0
$1 == "特定の文字列"
しかし、これだけではもっと幅広いパターン、例えば第1フィールドが数字、レコードが3桁の数字で始まっている、あるフィールドが半角アルファベット3個と数字数字5個など、は表現できません。これを可能にするのが「正規表現」です。
正規表現は、実はみんみんネットでは既に紹介済みです。awkでは少し拡張されて便利になっています。
. 改行以外の任意の一文字
r* 正規表現rの0回以上の繰り返し
r+ 正規表現rの1回以上の繰り返し
r? 正規表現rの0回か1回の繰り返し
^ 文頭
$ 文末
[abc] abcの任意の一文字を含む文字列(キャラクタクラス)
[^abc] abcと改行以外の任意の文字(キャラクタクラスの否定)
(r) 正規表現のグルーピング
実際の表現は、いろいろな例でもって体得していただくしかないでしょう。
任意の文字列 .*
数字1文字 [0-9]
数字3文字 [0-9][0-9][0-9]
数字の繰り返し [0-9]+
数字以外の文字 [^0-9]
半角アルファベット [a-zA-Z]
半角アルファベットの繰り返し [a-zA-Z]+
NIFTYのID [A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9]
空行(改行のみの行) ^$
先頭に1個以上の半角空白を含む行 ^ +.*
ホームページのタイトル行 ^[0-9][0-9][0-9] +\[
(「先頭に数字が3つ、このあと1つ以上
の半角空白をはさんで[がある行」の意味
です)
awkではいろいろなところに正規表現が使えます。正規表現は「式」として扱われ、表現があっていれば(マッチすれば)式の値が真になります。
例によって、具体例は次回です。
初出 NIFTY-Serve「みんみんネット」1996/09/28 (Sat) 12:55:35