• 締切済み

正規表現でimg要素後に続く改行を削除したい

現在、下記のようになっています ******* <img hogehoge /> 本文~ ******* それを ******* <img hogehoge /> 本文~ ******* この様に正規表現で変更したいのですが img要素に続く改行をひとつ削除することはできるでしょうか? よろしくお願いいたします

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>置換文字列 : (<img[^>]+)(>)\n >置換後のimg要素がすべて >(<img[^>]+)(>) そりゃ置き換え文字列だからそうなるだろうね… 置き換えする場合、検索時の文字をどうやってもってくるのかってのをもう少し調べたら良いんじゃないかな。 置き換えはされてるなら検索は大丈夫だろうしもう一息だよ。 ただ、気になるのは「1行のimgタグが2つ(以上)有って改行が2つ続く場合」かな。 変換されて1つになっちゃったりしてたら「最短一致」で探してごらん。

coodoo
質問者

補足

検索文字列 : (<img[^>]+)(>)\n\n 置換文字列 : \1>\n 正解かどうかは不明なのですが これで変換できました! ありがとうございますっ 正規表現、おもしろいですね

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

削除できるよ。 ただし、どういう文字列で正規表現を書いたらできるかっていうのは質問者があれこれやってみて、それを出して「ここは違うよ」という指摘しかしてあげられない。 だからまず自分で挑戦してみて。 うまくいかなかったらその正規表現を出して、こうなってしまってだめだった、と補足してね。 http://www.google.com/search?lr=lang_ja&q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%20%E5%85%A5%E9%96%80

coodoo
質問者

補足

ありがとうございます! 返信はこのフォームでいいのかな・・・間違えていたらすみません 改行が2つ続くimg要素のみに適応したいので 現在 検索文字列 : (<img[^>]+)(>)\n\n 置換文字列 : (<img[^>]+)(>)\n で試したのですが 置換後のimg要素がすべて (<img[^>]+)(>) になってしまって・・・ img要素はそのままにというのはどう変更すればいいのでしょうか よろしくお願いいたします

関連するQ&A

  • 正規表現で改行が3個続いてたら、それを削除する書き

    検索とか置換えで、正規表現で、改行が3回続いていたら、それを削除する書き方ってあるでしょうか? 試して見てるのですが、改行が全部消えてしまい、うまく思い通りにいきません。 検索:^\n 置換: とかだと、改行が全部なくなってしまいます。 ^\n\n\n$ だと、ヒットしません。 改行が続いていて、それを3行だけ取り除くなんていうのは、できないもんでしょうか。 文章の中にあります。 行頭に半角空白,改行と続くのもありますが、それはヒットしないように。      

  • javascript正規表現がieでうまく動かない

    imgのsrc属性を汎用的に変更したいので 正規表現を使って変更したいと思っています。 現在のimg要素をを取得して(下記、変数名currentImg)、 imgのsrc属性を以下のように末尾に_newがついたものに 変更したいと考えています。 var newImg = currentImg.src.replace(/^(.+)(\.[a-z]+)$/g,"$1_new$2"); currentImg.src = newImg; 他のブラウザではうまく行くのですが、 ie8でうまく動きません。 ieの正規表現は、何か別の書き方をしないといけないものなのでしょうか? それとも、そもそも書き方が間違っているのでしょうか? 詳しい方がいらっしゃいましたら ご教授いただけると幸いです。 どうぞ宜しくお願いいたします。

  • 正規表現のパターン

    <value:type>1</value:stype> <item:img url="http://hoge/"></item:img> <description>hogehoge hogehoge </description> みたいなXMLの「value:」と「item:」を「」に置換(消す)して、「description」の改行文字を削除したいのですが、どのようなパターンになるのでしょうか?

  • 正規表現を使いimgタグ内から幅と高さサイズを抜き出し

    正規表現を使いimgタグ内から幅と高さサイズを抜き出し phpにて正規表現を使い html の imgタグ内の width = "xxx" height = "xxx" を各々抜き出しその数字も個別に抜き出したいと思っております。 正規表現で行き詰っており、お知恵を拝借できればと思っております。 説明がわかりづらいかと思いますが、よろしくお願いしたいと思います。 下記のような文字列より <img src="http://test.co.jp/img/test01.jpg" alt="テスト画像です。" title="テスト画像です。" width="361" height="640" class="size-full wp-image-100" /> width="361" height="640" を個別に取りだし さらにその中の数字"361"を取り出したいと思っております。 正規表現に不慣れなので、お知恵をお借りいただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現の否定先読みについて

    <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>タグのみに適用させる方法はないでしょうか? どなたかよろしくおねがいいたします。

    • ベストアンサー
    • PHP
  • 秀丸の改行削除もしくは置換

    秀丸で改行だけを削除したいと考えています。 正規表現で\nで置換できる、ということは知っています。 下記のようなケースで、一番左端にある改行だけを 削除して、詰めたいのですが…何かよい方法はないでしょうか? よろしくお願いします。 ※何万行とあります。 ※間隔に規則性はありません。 ----------------------- ↓ ↓ ○○○↓ ↓ ↓ ↓ ××××↓ ↓ ----------------------- //////////////// 最終的に下記のような形にしたい ○○○↓ ××××↓

  • 正規表現(~を含まないものにマッチ)

    Perlの正規表現について質問です。 画像<img src="http://hogehoge.com/img/gokuu.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="http://hogehoge.com/img/pikkoro.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="http://hogehoge.com/img/bejiita.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="http://hogehoge.com/img/gohan.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="http://hogehoge.com/img/buruma.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> ↓ 処理後 ↓ 画像<img src="gazo_new1.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="gazo_new2.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="gazo_new3.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="gazo_new4.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> 画像<img src="gazo_new5.jpg" border=0><a href="http://hogehoge.com/">hogehoge</a><br> (変更した画像:gokuu.jpg,pikkoro.jpg,bejiita.jpg,gohan.jpg,buruma.jpg,) 以上のように 画像URL部分のみを gazo_new(連番).jpg に変更させ、 変更前の画像URL一覧を表示させるスクリプトを書いてみました。 $htmldata にHTMLの全データが格納されているとします。 $i=1; while($htmldata=~/(<\s*img.*?src.*?=["\s]*)([.\/]*?\/)?((?:(?!gazo_new)[^"\s>])*)?["\s]?.*?>/i){ $imgurlparts .="$3,"; $htmldata=~ s/(<\s*img.*?src.*?=["\s]*)((?:(?!gazo_new)[^"\s>])*)?(["\s]?.*?>)/$1gazo_new$i.jpg$3/i; $i++; } $htmldata .="(変更した画像:$imgurlparts)"; どうにもうまく動きません。 何卒ご教示をお願い致します。

    • ベストアンサー
    • Perl
  • タグの中の改行文字を正規表現で削除したい

    たとえば、 <a href="~" target="_blank"> というタグの中の改行文字(\n)を削除する正規表現を教えてください。 ただし、preg_replace_callbackは使わないでください。

    • 締切済み
    • PHP
  • 正規表現

    分かりづらい質問で申し訳ありませんが、PHPの正規表現で教えて下さい。 現在下記のような文字列があります。 見やすく改行しましたが、本来は改行はなく、1行です。 最初にPタグがあり、次に複数のクラスが付いたdiv(これを①とします)、同じく複数のクラスが付いたdivタグ(これを②とします)があるような構造です。 このdivタグの中にはfigureタグ、その中にimg タグがあります。 ②番目のdivの中のimgのsrcには特定の文字列があります。 この特定の文字列を含む親のdivタグ全体を抜き出す正規表現を書きたいと思っています。 つまり、正規表現の結果下記部分が抽出できればと思います(これを「正解」とします)。 <div class="(省略)"> <figure> <img src="{特定の文字列}"> </figure> </div> 現在このように記述しましたが、①、②全てのdivが取得されてしまっている状態です。 「/<div class="se-component se-image-container __se__float-none" contenteditable="false">(?>).*<\/div>/i」 これを「正解」のように抽出するにはどのような正規表現になるのでししょうか? よろしく御願い致します。 <p>ghoge</p> <div class="se-component se-image-container __se__float-none" contenteditable="false"> <figure style="margin: 0px;"><img src="data:image/jpeg;base64,/9j/4AA" alt="" data-rotate=""> </figure> </div> <div class="se-component se-image-container __se__float-none" contenteditable="false"> <figure style="margin: 0px;"><img src="{特定の文字列}" alt="" data-rotate=""> </figure> </div>

    • ベストアンサー
    • PHP
  • 正規表現について

    アメブロから独自ブログへ引越しを行うことになったのですが、 ペタしてね というリンク画像を毎ページに張り付けており、この画像リンクを一括で削除したいと思っています。 HTMLタグのパラメータが微妙にばらついており、正規表現の利用が必要かなと思っています。 専用のプラグインをインストールし、正規表現を利用して削除できることが分かったのですが、 正規表現の方法を数時間勉強してみましたが、結局どうすればいいのかわかりません・・・ 削除する画像リンクは以下のようなものです。 <a href="http://.........................."><img height="100" alt="ペタしてね" src="http://stat.ameba.jp/blog/ucs/img/decoPeta/pc/decoPeta_18.gif" width="100" /></a> width や hight がページによって微妙に違うようです。 どちらさまか、上記のようなタグをマッチングさせる正規表現を教えていただけませんでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう