人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

お世話になります。まとまった数のhtmlファイルをxhtmlに書き直したいと思っています。それで、<link rel="prev" href="hoge.htm">のような文の末尾に href="hoge.htm" />とスラッシュを入れたいのですが、link rel="prev" は全ファイル共通だけど、hoge.htmの部分は一定ではないという場合、正規表現をどう書けばうまく置換できるのか教えて下さい。よろしくお願いします。

●質問者: mysterious2005
●カテゴリ:ウェブ制作
✍キーワード:hoge href HTML LINK XHTML
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● wizemperor
●70ポイント

「 /」を追加するということですよね。

link要素だけなら次のような感じでできます。

検索

/<link(?:\s+[^"\'>]*"[^"]*"|\s+[^"\'>]*\'[^\']*\')*[^>]*)>/i

置換

<$1 />

他の空要素も変換するなら次のような感じ。

検索

/<((?:area|base|basefont|br|hr|img|input|isindex|link|meta|param)(?:\s+[^"\'>]*"[^"]*"|\s+[^"\'>]*\'[^\']*\')*[^>]*)>/i

置換

<$1 />
◎質問者からの返答

早々の回答ありがとうございました。教えていただいた二つのパターンを「秀丸のgrep」「Devas(http://www.vector.co.jp/soft/win95/util/se162621.html)」「複数行置換(http://www.vector.co.jp/soft/win95/util/se407023.html)の3つで試してみたのですが、それぞれ、

秀丸のgrep→「正規表現での'|'の前後の文字がないか、または+*?の直前に文字がありません」

Devas→「検索文字列が不正です」

複数行置換→「(入力した検索文字列の後に)が多すぎます」

とエラーメッセージが出てしまい、うまくいきませんでした。


2 ● wizemperor
●0ポイント

(コメントが書けないみたいなので補足)

この回答にポイントはいりません。

ソフトによって書き方やエスケープの仕方が違うと思うので、素の正規表現も書いておきますね。

ソフトに合わせて、書き方やエスケープの仕方は調整してみてください。


検索(小文字・大文字区別なしで検索)

<link(?:\s+[^"'>]*"[^"]*"|\s+[^"'>]*'[^']*')*[^>]*)>

置換

<$1 />

検索(小文字・大文字区別なしで検索)

<((?:area|base|basefont|br|hr|img|input|isindex|link|meta|param)(?:\s+[^"'>]*"[^"]*"|\s+[^"'>]*'[^']*')*[^>]*)>

置換

<$1 />
◎質問者からの返答

結局、htm">で終わるのはlink要素ぐらいだろうということで、htm">$で検索して置換という方法を取ってみました。

今回はこれでうまくいきましたが、もう少し勉強しないと駄目ですね。今回教えていただいたものを手がかりに、正規表現を覚えたいと思います。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ