• ベストアンサー

正規表現での置換

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

  • Perl
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
回答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/124)
回答No.1

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

関連するQ&A

  • タグの中のname, value値の取得

    ある文字列中に次のほぼ同値なinputタグ、 1:<input type="text" name="A" value="B"> 2:<input type='text' name='A' value='B'> 3:<input type=text name=A value=B> がある場合、この中からtext, A, B を抽出しようと思っています. (さらに、1,2のA, B に半角スペースが含まれる場合も考慮) 自分なりの方法の概略は、 $_ = $str; ~ /(<input[^>]*?>)/; $tag = $1; として、<input・・・>を得て、 $tag =~ /name=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i $name = $1; $tag =~ /value=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i $value = $1; としていたのですが、nameとvalue値が\sを含む場合や、<input>タグの中の"と"の間に > が含まれる場合に正しく動作しません。 何いい方法はないでしょうか.

    • ベストアンサー
    • Perl
  • 秀丸で正規表現を使って置換

    あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。

  • フォーカスが外れた時の入力チェックの仕方

    htmlで書かれたテキストエリアのフォーカスが外れた時に、 入力チェックを行いたいのですが すでに <input type=text name=abc value=""> というinputタグが存在していて このタグに手を加えずjavascriptを使い どうにかテキストエリアabcのフォーカスが外れた時に、 入力チェックを行いたいです 要するに htmlで<input type=text name=abc value="" onblur="関数名"> っと書く事が出来ないという状況です。 全く案が思い浮かびません 何かいい案がおありでしたらよろしくお願い致します

  • ラベルのマークアップ

    <input name="price_min" type="text" value="" id="price_min" />~ <input name="price_max" type="text" value="" id="price_max" />円 このようなフォーム要素があるとき、 どのようにラベル付けをするのが妥当なのでしょうか? <label> 価格:<br> <input name="price_min" type="text" value="" id="price_min" />~ <input name="price_max" type="text" value="" id="price_max" />円 </label> このように、ひとつの<label>に対して二つのコントロールを含めることはできるのでしょうか? 現在は<span>価格</span> のように<span>タグで代用しています。 ぜひアドバイスをお願いします。

    • ベストアンサー
    • HTML
  • JAVASCRIPTで、ボタンを押したら 入力項目を追加できるようにしたい。

    FORMタグ内に下記のようなの入力項目があります。 JAVASCRIPTを使って、追加ボタンを押したときに、下記の部分を2個、3個と追加させたいと思っております。 (最初から複数個分の入寮力フォームを用意しておくと、見た目が良くないため、追加ボタンで随時追加するようにしたい) どのようなjavascriptを書けばよいか、ご教授願えませんでしょうか。 どうぞよろしくお願い致します。 <select> <option value=" " selected="selected">選んでください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> </select> <br class="spacer"> </div> <div class="forms"> <label>テーブル1</label> <input type="text" name="textfield" id="textfield" /> <label>テーブル2</label> <input type="text" name="textfield" id="textfield" /> <label>テーブル3</label> <input type="text" name="textfield" id="textfield" class="short" /> <div class="btns"> <input type="button" value="送信" /> <input type="button" value="さらに入力項目を追加する" /> <input type="button" value="クリア" /> </div>

  • サイト内検索のタグ(CGI禁止の場合)でうまくいかない・・・(涙)

    cgiを使わないサイト検索機能をホームページにつけるため、 googleを使ったサイト内検索を行うタグをソースに入れたところ、うまく動作しません。 (仮に検索対象となる自分のホームページのドメインをwww.abc.ne.jpとします) <form action="http://www.google.co.jp/search" method="get"> <input type="hidden" name="as_dt" value="i"> <input type="hidden" name="as_epq" value="abc"> <input type="hidden" name="as_eq" value> <input type="hidden" name="as_occt" value="any"> <input type="hidden" name="as_oq" value> <input type="hidden" name="as_sitesearch" value="abc.ne.jp"> <input type="hidden" name="lr" value> <input type="hidden" name="num" value="10"> <input type="text" size="20" name="as_q"> <input type="submit" name="btnG" value="検索"> </form> http://www.abc.ne.jp/abcのサイト内を検索したいのですが、 この場合だとhttp://www.abc.ne.jp/のサイトも検索にかかってしまいました。 http://www.abc.ne.jp/abc内だけをサイト内検索するフォームタグはあるのでしょうか? 教えてください。よろしくお願いします。

    • ベストアンサー
    • HTML
  • 更新ページを書き換える

    こんにちは。 HTML関係でどうしてもわからないことが出てきまして詰まっています。 どうぞやり方を教えてください。 データー更新用のWebページがあり、次のタグが含まれています。 <input type="text" name="type_id" value="1"> <input type="file" name="image"> (この下に更新ボタン) これを、別に用意したプログラムから書き換えて、更新ボタンをプログラムで押したことにして処理させています。 type="text"は、valueがありますので、value="3"とか代入させると、ちゃんと3で更新できるのですが、Type="file"に目的の文字を代入することができません。 type="file"にたとえば c:\box1\abc.jpg と入れてやるにはどうしたらいいでしょうか? よろしくお願いします。

  • MTOS内のページに設置したメールフォームについて

    いつもみなさんのアドバイスを参考にさせて頂いております。 早速ですが、MTサイト内にメールマガジンのフォームを設置したところ、実際に名前とメールアドレスを入力し送信ボタンを押しても名前が入力されていませんなどとエラーが表示されます。 メールマガジン自体は他サイトで使用しているものでメールマガジンで使用しているCGIも他サイトのサーバにて稼動しております。 ところが、使用しているタグ<form> ~ </form>までをそのままMTに貼り付けて設置してみてもうまく運用できません。 何か問題があるのでしょうか? ちなみにタグは以下の通りです。 <div id="mail_maga"> <form action="http://www.***/***.cgi" method="post"> &nbsp;<table id="AutoNumber1"><tbody><tr> <td colspan="2" class="mail_magat">☆ メルマガ登録</td> </tr><tr> <td class="mail_magast">お名前</td> <td class="mail_magain"><input type="text" name="お名前" size="30"></td> </tr><tr> <td class="mail_magast">メールアドレス</td> <td class="mail_magain"><input type="text" name="メールアドレス" size="30"> 半角英数字</td> </tr></tbody></table> <table id="AutoNumber2" class="mail_maga2"><tbody><tr> <td> <input type="hidden" size="1" name="code" value="0000a" /> <input type="hidden" size="1" name="mlcd" value="0000a" /> <input type="hidden" size="1" name="key01" value="2542666" /> <input type="hidden" size="1" name="HPADDR" value="http://www.***/***.html" /> <input type="submit" name="mode" value="送信" /> <input type="submit" name="mode" value="内容確認" /> <input type="reset" value="リセット" /> </td> </tr></tbody></table> </form> 何かアドバイスありましたら宜しくお願いします。

    • 締切済み
    • CGI
  • JavaScriptで入力チェック

    ////サンプル//// <p><input type="text" value="" name="box_1" /></p> <p><input type="text" value="" name="box_2" /></p> <p><input type="text" value="" name="box_3" /></p> <p><input type="text" value="" name="box_4" /></p> Javascriptで入力チェックをして 入力がされていたらpタグとinputタグの間に「○」を表示させたいのですが どのように実装したら良いでしょうか? ・inputタグは4つだけではなくたくさんあります ・DBを使っているのでページを更新しても○が消えないようにしたいです よろしくお願いします!

  • iなぜかnputのvalueが利きません

    inputタグのvalueに<TMPL_VAR aaa>というのを入れているのですがなぜか表示されません。 <input type="text" name="text" value="<TMPL_VAR text>" size="150"><br> <TMPL_VAR text>には文字列が入っています。なぜでしょうか?

専門家に質問してみよう