自分の為のPerlメモ Perlの正規表現アレコレ。忘れそうだから。 1: URLを正規表現で引っかける URLを正規表現で書くと
/http:¥/¥/www¥.hackmylife¥.jp¥//
見たいに凄く読みづらくなる。 そんなときはmオプションで正規表現の//を変更できる。
m|http://www¥.hackmylife¥.jp/|
とか、
m#http://www¥.hackmylife¥.jp/#
とか
m?http://www¥.hackmylife¥.jp/?
アラ便利 でも"."はエスケープしないといけないのが嫌。 そんなときは¥Q,¥Eで囲むといい。
m|¥Qhttp://www.hackmylife.jp/¥E|
こりゃ便利 2: マッチ式を複数行に マッチ式に()が多いと読みづらい。そんなときは複数行で書ける/xオプション
$str =〜 /((\d+)([A-Za-z]*))
はこうも書ける
$str =〜 /   (     (       \d+     )     (       [A-Za-z]*     )   )/x
まぁ、便利。 あんまり見たこと無いけど、Perlでは普通なのかしら? 3: 式を評価(eval的な・・) 正規表現の中でPerlの式を評価するのはeオプション
my $str = "hallo world"
$str =〜 s/\w+/ucfirst($&)/eg
print $str
 ↓ Hallo World
おお、便利。 ucfirstは単語の先頭文字を大文字に変換。 まとめ: 正規表現修飾子 正規表現で使える修飾子
修飾子意味
/g繰り返しパターンマッチを行う
globalのg
/e置換後の文字をPerl式として扱う
evaluateのe
/i大文字、小文字の違いを無視
ignoreのi
/o変数を含んだ正規表現を使う場合、その変数が変化しないなら、前回の処理内容を再利用(高速化する)
compile onceのo
/s文字列を1行として扱う
single lineのs
メタ文字.が改行にもマッチする
/m文字列を複数行として扱う
multiple lineのm
メタ文字^や$が行単位で扱われる
/x空白や改行、コメントを無視する
スペースは\を付ける必要がある
extendのx