ダブルクオートやシングルクオートで囲まれた文字を抽出するための正規表現

HTMLの属性値を正規表現で書き換えたいときなど、ダブルクオートやシングルクオートで囲まれた文字を正規表現で抽出する場合は以下の正規表現で抽出が可能。

"((?:\\.|[^\"\\])*)"

HTMLの属性値を限定したい場合は以下のようにすればよい。

(sizes|width|height)="((?:\\.|[^\"\\])*)"

この正規表現の出典は以下のサイトより。

「人力検索はてな」より抜粋
http://q.hatena.ne.jp/1246344237

正規表現の読み方は以下のようになります。
——————————————
"              # 文字列の開始
 (               # キャプチャするグループ化
  (?:              # キャプチャしないグループ化
   \\.               # バックスラッシュによってエスケープされた任意の一文字
   |                 # または
   [^\"\\]           # ダブルクォートとバックスラッシュ以外の一文字
  )                # グループ化終了
  *                # ↑の 0 回以上の繰り返し
 )               # グループ化終了
"              # 文字列の終了
——————————————

なおPHPのpreg_replaceで使用する場合には以下のようにエスケープする必要がある。

preg_replace(
    array("/(sizes|width|height)=\"((?:\\\.|[^\"\\\])*)\"/i")
    ,array("(変換したい文字列)")
    ,$return
);

エロい人ありがとう。備忘録として。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です