• ベストアンサー

リンク以外の部分の置換方法

お世話になっております。 例えば $A = 'たこ'; $B = qq[いかすみ<A href="" title="いかすみ">いかすみ</A>いかすみ]; という場合に、$B のリンク部分外の いか(計4つ)を たこ(計2つ)に置換したいのです。 ↓希望する結果 $B = qq[たこすみ<A href="" title="いかすみ">いかすみ</A>たこすみ]; いかすみ前後に文章や文字があります。 リンク部分は複数の可能性もあります。 行き詰まってしまいましたので、ご教示頂けますと嬉しいです。

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

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

No1です ソースの一部まちがえてました 誤 while ($b =~ m~((?:(?!<a[\s>]).)*)(<a[\s>].*?(?:</a>|\z))*~ig) { 正 while ($b =~ m~((?:(?!<a[\s>]).)*)((?:<a[\s>].*?(?:</a>|\z))*)~ig) { 失礼しました

pantonenezu
質問者

お礼

遅くなりましたが、御回答有難う御座いました。 ほんっとうに助かりました!

その他の回答 (1)

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.1

$b から (リンク部以外)<A ...>(リンク部)</A>を繰り返し抜き出し、(リンク部以外)のみ置換して組み立てなおしてみましたけど、どうでしょう $a = 'たこ'; $b = qq[いかすみ<A href="" title="いかすみ">いかすみ</a>いかすみ]; $z = ''; while ($b =~ m~((?:(?!<a[\s>]).)*)(<a[\s>].*?(?:</a>|\z))*~ig) { ($x, $y) = ($1, $2); $x =~ s/いか/$a/g; $z .= "$x$y"; } $b = $z; print $b;

関連するQ&A

専門家に質問してみよう