解決済みの質問
すいません、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
否定するのではなく、マッチするけど無視するという形で下記のように書くことが多いと思いますよ。
/<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が役に立った」と投票しています