正規表現

正規表現を使ったパターンマッチング

my $drag = '欠陥収縮剤塩酸テトラヒドロゾリン';
if ( $drag =~ /塩酸/){
  print '配合';
}
# 変数$dragが「塩酸」という文字列を含んでいる
^ 文字列の先頭
if ( $drag =~ /^欠陥収縮剤/){
  print '配合';
}
# 変数$dragが「欠陥収縮剤」という文字列で始まる
$ 文字列の末尾
if ( $drag =~ /テトラヒドロゾリン$/){
  print '配合';
}
# 変数$dragが「テトラヒドロゾリン」という文字列で終わる

区切り文字の置き換え

「/.../」ではURLを判別したいときなど、スラッシュ自体がエスケープしても読みにくいコードになってしまう。
「m|...|」のようにすると読みやすい。

my $url = 'http://www16.big.or.jp/~zun/';
if ($url =~ m|http://|) {
  print 'WEBサイト';
}

パターンマッチ修飾子

  • g 繰り返しマッチする
  • i 大文字と小文字の区別をしない
  • o 変数展開を1度だけ行う
  • m 文字列を複数行として扱う
  • s 文字列を単一行として扱う
  • x 拡張正規表現