purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

正規表現のデリミタ

正規表現を使う時いまだに
サルにもわかる正規表現入門にお世話になってる僕ですが、


今回こんなエラーが出てきました。

Delimiter must not be alphanumeric or backslash in 〜

翻訳に通すと
デリミタ(先頭と末尾の区切り文字)は英数字やバックスラッシュじゃだめだよヽ(`Д´)ノ
ってことらしく、


いつもスラッシュでいいのに何でだろうって思ったら。
今回は置き換え文字にスラッシュを指定してたからだとわかった。


んで更にみると、デリミタはスラッシュじゃなくても()とか{}とかでもいいらしい
ということで

$in_column_path = preg_replace("(\/usr\/home\/.+\/html\/column\/)", "", $array['blog_site_path']);

こんな風に括弧で囲んだ。


もっと言うならば
引用:正規表現とデリミタとエスケープ - 徒書

Perl正規表現マッチするときには /pattern/ よりも m{pattern} という書き方をよく使います。

らしいPerl互換のだからPHPでもタブンいけるだろう。