ホームページ作成/ホームページ作成テクニック、小技

たくさんのリンクを正規表現で楽に一括更新する方法(5ページ目)

複数のHTMLファイル内にある「リンク先URL」・「リンク文字」・「属性値」などを一度に更新したい場合は、複数ファイルを対象にして一括置換できる機能や、正規表現による置換処理ができるテキストエディタを使うと、とても楽に作業できます。

西村 文宏

執筆者:西村 文宏

ホームページ作成ガイド

URL末尾の#以降や?以降を維持したまま一括更新する

リンク先URLには、ページ内リンクとして末尾に「#second」のような文字列が付加されていたり、アクセス解析の補助として「?from=home」のような文字列が付加されている場合もあります。それらの文字列を維持したまま、リンク先URLを修正したい場合も、正規表現で実現できます。

例えば、同一ページへのリンクとして、
<a href="../../samples/abc.html#DEF">サンプル</a>
<a href="/samples/abc.html?from=home">さんぷる</a>
などの記述が混在している状況で、それらをそれぞれ、移転先の
<a href="/yonples/abc123.html#DEF">ヨンプル</a>
<a href="/yonples/abc123.html?from=home">ヨンプル</a>
に修正したい場合は、

◆検索語:
<a href=".*?/samples/abc\.html(.*?)">.+?</a>
◆置換後:
<a href="/yonples/abc123.html\1">ヨンプル</a>
と指定すれば、URL末尾に加えられた文字列を維持したまま、URLとリンク文字を一括して修正できます。

ここでは、「検索語」側に以下のような正規表現を使用しています。
  • (.*?)
    先ほど説明した通り、「.*?」は「任意の文字が0回以上出現する(最短一致)」を示す表現です。その「.*?」を丸括弧で囲むことで、後方参照が可能になります。後方参照とは、ここで該当した文字列を、「置換後の文字列」として利用可能にする機能のことです。
さらに、「置換後」側に以下のような正規表現を使用しています。
  • \1
    これは後方参照の記述です。「\1」と記述した箇所に、検索語側で丸括弧を付けた部分の文字列がそのまま挿入されます。
上記のように指定することで、URL末尾にある文字列はそのまま維持(=置換先にコピー)して、URL部分とリンク文字だけを修正できます。

URL末尾の#以降や?以降を維持したまま一括更新する(2)

先ほどの置換条件では、URLの末尾に「?」記号や「#」記号以外の文字列が付いている場合でも置換対象になります。あまりないでしょうが、例えば以下のような記述があった場合、これも置換対象になってしまいます。
<a href="/samples/abc.htmlfile.gif">画像</a>

URL末尾に「?」記号か「#」記号のどちらかが付いている場合だけに置換対象を限定したい場合は、検索語を以下のように記述します。
<a href=".*?/samples/abc\.html([?#].*?)">.+?</a>
上記の「 [?#] 」は、「?記号か#記号のいずれか」を表します。その後「 .*? 」と続けていますので、全体では「?記号か#記号の後に任意の文字が0回以上出現する」という意味になります。

さて、リンクを作るa要素の開始タグには、href属性だけが指定されているとは限りません。別ウインドウで開くためにtarget属性が付加されていたり、装飾するためにclass属性が付加されていたりすることもあります。「属性値を維持したまま一括置換したい」場合や、「属性を削除した上で一括置換したい」場合もあるでしょう。

そこで最後に、属性を維持したままリンク先やリンク文字を一括更新する方法をご紹介致します
  • 前のページへ
  • 1
  • 4
  • 5
  • 6
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます