- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現の否定先読みについて)
正規表現の否定先読みについて
このQ&Aのポイント
- 正規表現を使用して、width="100"がついていない<img>タグのsrc属性までを抜き出して置換したいです。
- width="100"がついていない<img>タグのsrc属性までを正規表現で抜き出す方法について教えてください。
- 正規表現の否定先読みを使用して、width="100"がついていない<img>タグのsrc属性までを抜き出そうとしていますが、うまく動作しません。解決策を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私自身は、秀丸を使ってなく、PHP もよくわかりませんが、次のようにしてみたらどうでしょうか。単に、タグを跨がないようにしているだけです。 /<img src="http:\/\/.*?.jpg"\s(?!width)/ ↓ /<img src="http:\/\/[^<>]*?\.jpg"\s(?!width)/
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
一度imgタグを全部ひっこぬいてから、widthにマッチしないものを 拾うのが簡単では? 「width」に否定先読みするとimgタグの>が閉じていないため「.*」が ずーっと後ろの方まで探しつづけちゃいそうです
質問者
補足
回答ありがとうございます。 申し訳ありませんが適したカテゴリが分からず正規表現に長けていそうなPHPを選んだのですが 実は秀丸エディタにての置換の話なので、一発で行ける方法が望ましいのです、、すみません。 >ずーっと後ろの方まで探しつづけちゃいそうです そうなんです。 imgタグを閉じていないからっていうわけではないのですが、今回の場合 /<img src="http:\/\/.*?.jpg"\s(?!width)/ この .*?.jpg の部分で後ろにwidthがきていない.jpgまで続いてしまっているのが原因です。 例えこれを /<img src="http:\/\/.*?.jpg"\s(?!width).*?>/ としたところでaタグの>までマッチしてしまうだけです。 やはり秀丸でやるならマクロを組んで一度imgタグを非難させそれを加工するしかないでしょうか…。
お礼
完璧です!その発想はありませんでした。 ありがとうございます!