Aptanaで正規表現を使って置換する
Webサイトの作成にAptanaを使ってます。
検索や置換のダイアログで「正規表現」のチェックボックスがあったので、
正規表現が使えるのかーとは思ってたんですが、
なんだか難しそうでこれまで使っていませんでした。
この度、SEO的にサイトを見直していて、
見出しのタグを書き換えようと思ったのですが、
ページを一つ一つ変えてたらキリがないなぁ…と思って正規表現で置換を調べました。
と言っても自分が使う範囲しか調べないズボラな性格なので、すごく限定的です…。
ワイルドカード
<div class="midashi1">ページごとに違う見出し</div>
このmidashi1クラスを持った<div>タグを全ページ<h1>タグにしたいと思います。
開始タグは「<div class="midashi1">」で置換できそうですが、終了タグは…。
やっぱり開始タグと終了タグをワンセットで置換したいですよね。
しかし、見出しはページごとに違うので、そのままでは検索出来ません。
そこで、[ファイル検索]の正規表現を使います。
追記:ファイル検索を使う際は、スコープ*1を適切に設定してください。
「正規表現」のチェックボックスにチェックを入れると正規表現が使えるようになります。
また、「含まれるテキスト」のテキストボックスでctrl+Spaseを押すと、簡単なインテリセンスが出ますのでそれも参考にしてください。
では早速、ページごとに違う見出しをもつ<div>タグを検索してみます。
<div class="midashi1">.*</div>
これだけでOKです。
「.」は、任意の文字(1文字)を、「*」は直前の文字を0回以上一致させます。
なので、「.*」で、任意の文字を0回以上一致ということになります。
これで、見出しがなんだろうが、あろうがなかろうが一致するタグを探し出してくれます。
ただし、「.*」に改行は含まれないようです。
<div class="midashi1">
ページごとに違う見出し
</div>
このような複数行を置換する場合には、置換したい部分を選択してからファイル検索を開くと、
自動的に改行コードの入ったテキストが入力されるので、
改行コードを消してしまわないように編集しましょう。
キャプチャー・グループ
「.*」を使ってmidashi1クラスを持った<div>タグを抽出できたら、次は置換です。
置き換えるテキストで使える正規表現は、検索するテキストで使える正規表現とは少し違います。
こちらもctrl+Spaceでインテリセンスが表示されるので参考にしてください。
置換で問題になるのは、ページごとに違う見出しをどうやって残すかです。
検索で使った「.*」をそのまま使うと、見出しが全て文字列の「.*」に置き換わってしまいます。
インテリセンスを眺めてみて、使えそうなのは「キャプチャー・グループiの一致」くらいです。
キャプチャー・グループを使うには、検索の方も少し変更します。
<div class="midashi1">(.*)</div>
このように、「.*」を「()」で囲むことで、「.*」をキャプチャー・グループとしてマークします。
もちろん、文字列としての「.*」ではなく、「.*」にあたる部分の見出しをマークしています。
そして置換するテキストを以下のようにします。
<h1 class="midashi1">$1</h1>
「$」と数字の「1」です。
キャプチャー・グループが複数ある場合は、1から順番に数字を増やしていけばOKです。
検索にミスがあるかもしれないので、置き換える際は必ずプレビューで確認してからにしましょう。
また、もし間違えて置換してしまっても、ctrl+Zで全て元に戻すことができます。
*1:使用中のプロジェクトのみを対象にする場合は、エンクロージング・プロジェクトを選択してください。