
<a href="http://example.com/aaaa/hogehoge1.jpg" target="_blank"><img src="http://example.com/aaaa/hogehoge1.jpg" width="100" alt="huge1"></a><br />hogehoge<br /><a href="http://example.com/bbbb/hogehoge2.jpg" target="_blank"> <img src="http://example.com/bbbb/hogehoge2.jpg" alt="huge2"></a>
こういうHTMLがあるとします。改行はなく1行です。
このHTMLから正規表現で 『width="100"がついていない<img>タグ』 のsrc=""までを抜き出して置換したいのです。
期待する結果は
<img src="http://example.com/hage/hogehoge2.jpg"
です。
そこで
/<img src="http:\/\/.*?.jpg"\s(?!width)/
というパターンを試しましたが、.*?の最短一致が思った通りにいかず
<img src="http://example.com/aaaa/hogehoge1.jpg" width="100" alt="huge1"></a><br />hogehoge<br /><a href="http://example.com/bbbb/hogehoge2.jpg"
と、1つ目の<img>が入ってしまい、2つ目の<a>タグまで抜き出されてしまいます。
これをうまくwidth="\d+"と入っていない<img>タグのみに適用させる方法はないでしょうか?
どなたかよろしくおねがいいたします。
No.2ベストアンサー
- 回答日時:
私自身は、秀丸を使ってなく、PHP もよくわかりませんが、次のようにしてみたらどうでしょうか。
単に、タグを跨がないようにしているだけです。/<img src="http:\/\/.*?.jpg"\s(?!width)/
↓
/<img src="http:\/\/[^<>]*?\.jpg"\s(?!width)/
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タグを非難させそれを加工するしかないでしょうか…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS imgとpを縦・横に中央揃えする 1 2023/01/17 11:30
- JavaScript htmlとcssに関する質問です 3 2022/12/06 05:36
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【PHP】正規表現でHTMLを置換し...
-
PHP4→5にアップグレードしたら...
-
自動置き換えタグをHTML形式にする
-
php正規表現 相対パス→絶対パス
-
reuterの記事をbeautiful.soup....
-
VBAのコマンドボタンの文字列の...
-
awkで改行を除いて文字列を抜き...
-
jsp 改行コードで改行させて表...
-
、"(ダブルクォーテーション)...
-
JAVA Spring 改行コードを含む...
-
文字の入力で横バー上段、中断...
-
ソースコードの1行が長いとき...
-
Excel関数「COUNTIF」で”文字”...
-
文字化け変換方法
-
ダブルコーテーション(
-
日本語(マルチバイト)でのwor...
-
正規表現で自動リンク後、長いU...
-
ラベル(スタティックテキスト)...
-
メールの1行の文字数制限について
-
メッセージボックスで1025文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseより、タスク・タグの使...
-
echoで画像を呼び出すことがで...
-
Nvuで作成したhtmlをコピペして...
-
PHPでのページ表示について
-
(コード付きです)文章の中か...
-
タグ
-
URLの連続アクセス
-
XSSで、<a><pre>タグだけを有効...
-
J-SH09 でのウェブ表示
-
ペナルティーについて
-
htmlのソースからテーブルの値...
-
クリッカブルマップはネスケで...
-
[正規表現][入れ子]ネストされ...
-
あるタグから対応するタグまで...
-
preg_replace() で特定の文字の...
-
強制ジャンプを中止したいです。
-
phpの定義済み関数
-
タグにはさまれている文字以外...
-
cHTMLのタグはHDMLでは
-
自分でタグ打ちして作ったペー...
おすすめ情報