院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

正規表現の最小一致   2008-01-04

まだまだ正規表現の修行が足りなかったようです。。

preg_match_all("/\[(.*),(https?:\/\/[a-zA-Z0-9_\.\/\~\%\:\#\?=&\;\-]+)\]/i", $text, $matches);

当ブログシステムで使っているWikiコンポーネント(自作)のURL抽出部分でした。

[タイトル,URL]

でリンクを意味するWiki記法を抽出するための正規表現なのですが、

[タイトル,URL]と[タイトル,URL]

といった記述がある場合、2つに分割されず合体して抽出されてしまいました。

最小一致でなんとかなるはずとはわかっていたのですが、やり方がわからずそのまま放置していました。

さすがにこのままではまずいと思いPHPで利用できる主な正規表現の覚書 - mtblue.orgを見たら「?」を付けるだけで対応できるそうで・・・

//                 ↓
preg_match_all("/\[(.*?),(https?:\/\/[a-zA-Z0-9_\.\/\~\%\:\#\?=&\;\-]+)\]/i", $text, $matches);

もっとWikiパーサーを拡張して修行します。


コメントを書く