• ベストアンサー

正規表現での置換

<input class="abc" type="text" value="abc" name="abc" id="abc"> といった文字列があるのですが、 「class="abc" type="text" value="abc" name="abc" id="abc"」 の部分は任意の英数字が入ります。 終了タグの前に スペースとスラッシュを入れて <input class="abc" type="text" value="abc" name="abc" id="abc" /> に置き換えたいと思います。 よろしくご教授お願いできませんでしょうか?

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

  • ベストアンサー
回答No.3

ANo.2 へ補足。 1. 正規表現で、/x 修飾子を使うと、空白文字を無視します。 ですので、 $text =~ s{(<input class=[^>]*)>}{$1 />}xms では、input と class の間のホワイトスペースにマッチさせることができません。 2. 「class="abc" type="text" value="abc" name="abc" id="abc"」の部分は任意の英数字 とのことなので、input の直後の属性が class とは限らない。 以上をふまえて、 $text =~ s{(<input \s [^>]*)>}{$1 />}xms; でいかがでしょう。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

多分HTMLのテキストを食わせたりするんでしょうから、 $text =~ s{(<input class=[^>]*)>}{$1 />}xms てなところでどうでしょうか?

  • OK_WAVE
  • ベストアンサー率17% (22/125)
回答No.1

適当に書いたんで間違えてたらご免なさい $input='<input class="abc" type="text" value="abc" name="abc" id="abc">'; $input =~ s/>$//; $input =~ s/$/ \/>/;

関連するQ&A