G-SCE > 乗りれ ソフトページ > ひまわり > 正規表現 for ひまわらー 著者:tomo さん・発案(?):pooh さん
正規表現の基礎
ひまわりで使える正規表現は、マッチ、区切る、置換、入れ換えがあるが、一番よく使うのは正規表現置換だと思うので、それについて説明する。
正規表現置換の基本形は"s#検索する文字列#置き換えたい文字列#kmg"である。
正規表現は検索する文字列の部分に使うことが出来る。
また、"#"の代わりに"/"を使うことも出来る。
簡単な正規表現
任意の1文字を表す正規表現 "."
ピリオドを一つ打つと、どんな文字にもマッチする正規表現になる。
なお、ピリオドなどの特殊文字をまとめて'メタ文字'と言う。
cf. 「123abcあいう」を、"s/./A/kmg"で、正規表現置換して、表示。
任意の文字の連続を表す正規表現 "*"
アスタリスクは、その直前に来た1文字が0文字以上連続している文字列とマッチする。".*"とすればどんな文字列にもマッチする。
1文字以上の連続を表すには"..*"とするか、"+"を使う。"+"の使い方は"*"と同じ。
cf. 「abbabbaaabb」を、"s/ba+/A/kmg"で、正規表現置換して、表示。
任意の文字の1文字以下の連続を表す正規表現 "?"
使い方は"*"と同じ。直前の一文字が0文字または1文字の文字列にマッチする。
cf. 「a ab abb aab」を、"s/ab?/A/kmg"で、正規表現置換して、表示。
特殊な文字を表す正規表現
'数字'や'アルファベット'のように特殊なグループに存在している文字を表す正規表現。
数字 :\d
英数字 :\w (注:'_'にもマッチする
空白文字:\s
これらを使うときの注意として、'\'がひまわりの文字列中で展開されてしまうので実際に使うときは"\\d"と指定する必要がある。
また、大文字にするとそれを除く文字にマッチする。
任意のグループのうち一つを現す正規表現 "[]"
文字列を"[]"でくくるとその中のどれか一文字とマッチする正規表現になる。
また、"[]"で一つの正規表現とみなされるので、"+"などと併用することが出来る。
cf. 「1abあ」を、"s/[\\da]/A/kmg"で、正規表現置換して、表示。
「12aあac-a」を、"s/[\\dac]+/A/kmg"で、正規表現置換して、表示。
後置参照・グループ化を行う正規表現 "()"
任意の文字列を"()"でくくるとその中でマッチした文字列を後から参照できる。
また、"[]"で一つの正規表現とみなされるので、"+"などと併用することが出来る。
cf. 「aaa bbb ccc」を、"s/(a+) bbb (cc)c/'$1' `$2`/kmg"で、正規表現置換して、表示。
これだけあればたいていの文字列は扱えると思う。わからなくなったときはチャットにて。
2004/07/21コメント : チャットは停止中なので、ひまチャ!・ひまノート・
ここのページの掲示板のいずれかで聞くといいかも。
ひまわりで使える正規表現は、マッチ、区切る、置換、入れ換えがあるが、一番よく使うのは正規表現置換だと思うので、それについて説明する。
正規表現置換の基本形は"s#検索する文字列#置き換えたい文字列#kmg"である。
正規表現は検索する文字列の部分に使うことが出来る。
また、"#"の代わりに"/"を使うことも出来る。
簡単な正規表現
任意の1文字を表す正規表現 "."
ピリオドを一つ打つと、どんな文字にもマッチする正規表現になる。
なお、ピリオドなどの特殊文字をまとめて'メタ文字'と言う。
cf. 「123abcあいう」を、"s/./A/kmg"で、正規表現置換して、表示。
任意の文字の連続を表す正規表現 "*"
アスタリスクは、その直前に来た1文字が0文字以上連続している文字列とマッチする。".*"とすればどんな文字列にもマッチする。
1文字以上の連続を表すには"..*"とするか、"+"を使う。"+"の使い方は"*"と同じ。
cf. 「abbabbaaabb」を、"s/ba+/A/kmg"で、正規表現置換して、表示。
任意の文字の1文字以下の連続を表す正規表現 "?"
使い方は"*"と同じ。直前の一文字が0文字または1文字の文字列にマッチする。
cf. 「a ab abb aab」を、"s/ab?/A/kmg"で、正規表現置換して、表示。
特殊な文字を表す正規表現
'数字'や'アルファベット'のように特殊なグループに存在している文字を表す正規表現。
数字 :\d
英数字 :\w (注:'_'にもマッチする
空白文字:\s
これらを使うときの注意として、'\'がひまわりの文字列中で展開されてしまうので実際に使うときは"\\d"と指定する必要がある。
また、大文字にするとそれを除く文字にマッチする。
任意のグループのうち一つを現す正規表現 "[]"
文字列を"[]"でくくるとその中のどれか一文字とマッチする正規表現になる。
また、"[]"で一つの正規表現とみなされるので、"+"などと併用することが出来る。
cf. 「1abあ」を、"s/[\\da]/A/kmg"で、正規表現置換して、表示。
「12aあac-a」を、"s/[\\dac]+/A/kmg"で、正規表現置換して、表示。
後置参照・グループ化を行う正規表現 "()"
任意の文字列を"()"でくくるとその中でマッチした文字列を後から参照できる。
また、"[]"で一つの正規表現とみなされるので、"+"などと併用することが出来る。
cf. 「aaa bbb ccc」を、"s/(a+) bbb (cc)c/'$1' `$2`/kmg"で、正規表現置換して、表示。
これだけあればたいていの文字列は扱えると思う。わからなくなったときはチャットにて。
2004/07/21コメント : チャットは停止中なので、ひまチャ!・ひまノート・
ここのページの掲示板のいずれかで聞くといいかも。