みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

正規表現での置換

<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" />
に置き換えたいと思います。
よろしくご教授お願いできませんでしょうか?

投稿日時 - 2007-12-12 22:01:32

QNo.3593403

困ってます

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

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;

でいかがでしょう。

投稿日時 - 2007-12-13 07:47:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

多分HTMLのテキストを食わせたりするんでしょうから、

$text =~ s{(<input class=[^>]*)>}{$1 />}xms

てなところでどうでしょうか?

投稿日時 - 2007-12-12 23:48:07

ANo.1

適当に書いたんで間違えてたらご免なさい

$input='<input class="abc" type="text" value="abc" name="abc" id="abc">';
$input =~ s/>$//;
$input =~ s/$/ \/>/;

投稿日時 - 2007-12-12 22:33:11