自分の為のPerlメモ
Perlの正規表現アレコレ。忘れそうだから。
1: URLを正規表現で引っかける
URLを正規表現で書くと
/http:¥/¥/www¥.hackmylife¥.jp¥//見たいに凄く読みづらくなる。 そんなときはmオプションで正規表現の//を変更できる。
アラ便利 でも"."はエスケープしないといけないのが嫌。 そんなときは¥Q,¥Eで囲むといい。m|http://www¥.hackmylife¥.jp/| とか、 m#http://www¥.hackmylife¥.jp/# とか m?http://www¥.hackmylife¥.jp/?
m|¥Qhttp://www.hackmylife.jp/¥E|こりゃ便利 2: マッチ式を複数行に マッチ式に()が多いと読みづらい。そんなときは複数行で書ける/xオプション
まぁ、便利。 あんまり見たこと無いけど、Perlでは普通なのかしら? 3: 式を評価(eval的な・・) 正規表現の中でPerlの式を評価するのはeオプション$str =〜 /((\d+)([A-Za-z]*))
はこうも書ける
$str =〜 / ( ( \d+ ) ( [A-Za-z]* ) )/x
おお、便利。 ucfirstは単語の先頭文字を大文字に変換。 まとめ: 正規表現修飾子 正規表現で使える修飾子my $str = "hallo world" $str =〜 s/\w+/ucfirst($&)/eg print $str
↓ Hallo World
修飾子 | 意味 |
---|---|
/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 |
コメント