- ベストアンサー
正規表現での置換
<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" /> に置き換えたいと思います。 よろしくご教授お願いできませんでしょうか?
- みんなの回答 (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)
多分HTMLのテキストを食わせたりするんでしょうから、 $text =~ s{(<input class=[^>]*)>}{$1 />}xms てなところでどうでしょうか?
- OK_WAVE
- ベストアンサー率17% (22/125)
適当に書いたんで間違えてたらご免なさい $input='<input class="abc" type="text" value="abc" name="abc" id="abc">'; $input =~ s/>$//; $input =~ s/$/ \/>/;