正規表現の文字列否定

解決済みの質問

正規表現の文字列否定

すいません、PHPをたまたま使用しているので、
PHPのカテゴリで質問させていただきますが、

正規表現で特定の文字列の集合を
まとめて否定することはできないのでしょうか。

例えば、<p class="hoge"><a href="test.html">aaa</a></p>
という部分があって、
hogeのクラスが付いている行のhrefのURIだけ取得したいのですが、
<p class="hoge"">という部分が取り除けません。
イメージ的には[^(<p class=\"hoge\">)]という感じで、
否定できるのかな~と思っていたんですが、
これはできないんですよね。

まとまった文字列を否定することはでいないのでしょうか。

ご教授お願いいたします。

投稿日時 - 2010-03-19 09:11:43

連想キーワード:

QNo.5763260

すぐに回答ほしいです

質問者が選んだベストアンサー

否定するのではなく、マッチするけど無視するという形で下記のように書くことが多いと思いますよ。

/<p class\=\"hoge\"><a href\=\"(.*)\">/

URLにマッチするグループ (.*) のみを抽出するのです。

これをPHPのスクリプトにすると、下記のようになります。

preg_match('/<p class\=\"hoge\"><a href\=\"(.*)\">/', $str, $arr);

$strは元の文字列で、$arr[1] にURLの中身が入るはずです。

下記の拙文をご参考下さい。

投稿日時 - 2010-03-19 09:31:01

お礼

>URLにマッチするグループ (.*) のみを抽出するのです。
()をすることでその中身だけ$arrに格納されることを知りませんでした!

ありがとうございました!!!

投稿日時 - 2010-03-19 11:00:59

3人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • ""を"に変えたい! ...
  • location href="" ...
  • <a href="絶対URL" title="○○○">○○○</a> ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら