サイブリッジラボでタグ「正規表現」が付けられている記事一覧

Dreamweaverで正規表現を使用して置換する方法 その2Dreamweaver

どうもこんにちは、ハラです。

グラコロが発売されましたね。
この時期のマックは期間限定メニューが多くて、すこしハッピーです。
そんなグラコロ食べながら投稿です。

前回は、Dreamweaverで正規表現を使用して置換する方法でした。

はい、復習はおっけーですか?


今回はほんの少しだけ掘り下げてみようと思います。

前回お伝えしました(.*)
改行以外のすべての単一文字を0回以上繰り返す
という意味ですが、
意図しないところまでさくっと選択されてしまう時があります。

たとえば、

<select> <option value="ほぼ食べる">グラコロ</option>
<option value="よく食べる">チキンナゲット</option>
<option value="だいぶ食べる">ポテト</option>
</select><

上記で、valueの値だけ置換したいとします。

ctrl+Fで
検索: <option value="(.*)>
だと
<option>の中がすべて選択されてしまいます。

20091013a.jpg

その時は、

(.*?)

を使いましょう。

これは
改行以外のすべての単一文字をなるべく少ない回数だけマッチさせるという意味。

これでだいぶ、検索の判定力が向上します。

20091013b.jpg
ですが、もっとスマートに絞り込める正規表現もあります。

絞り込んだ検索・置換

(.*)はなにもかも全て判定されますが、
[\w]*[\d]*というふうに書くと、
数字だけ、英数字だけといった条件指定が可能になります。

¥w→下線を含む、英数字 1 つ。[A-Za-z0-9_] と同じ
¥d→数字1文字。数字 1 文字。[0-9] と同じ
¥s→スペース、タブ、用紙送り、改行を含むホワイトスペース1つ
参考:adobe正規表現

奥が深いですね。
こうすることで、検索でも絞り込んでいくことが可能です。

たとえば、

<table>
  <tr>
   <th>電話番号</th>
   <td>03-5464-1177</td>
 </tr>
 <tr>
    <th>携帯電話</th>
   <td>090-1234-5678</td>
 </tr>
</table>

tdの中を検索したい時。

<td>(.*?)>

<td>(.*)</td>

<td>[\w]+-[\w]+-[\w]+</td>
で引っかかります。
ですが、そのままだと電話番号も携帯番号も検索されてしまいます。

携帯番号だけ検索・置換をする時は

検索:\d{3}-\d{4}-\d{4}

とすれば、
「3桁-4桁-4桁」の「数字のみ」検索として絞り込むことができます。
{}の中に桁数が入っているのですね。

もちろん、$nも使えます。 たとえば、

<img src="/img/image-A.jpg" alt="サンプルイメージA" />
<img src="/img/image-B.jpg" alt="サンプルイメージB" />
<img src="/img/image-C.jpg" alt="サンプルイメージC" />
上記のimage-A.jpg(ダッシュ)からimage_A.jpg(アンダーバー)に代える場合。

検索:/([\w]*)-([\w]*).
置換:/
$1_$2.
です。

 

このように正規表現は、Web制作の中でいろんな場面に出てきて奥が深いものです。
今回紹介した正規表現は、まだまだ入り口付近のものばかり。

これを機会にWebデザイナーの皆さんも正規表現について理解を深めてみてはいかがでしょう。

どうもこんにちは、ハラです。
時間短縮・作業効率化を目指し、今日もがんばっております。

さて。
webデザイナーの方なら、置換や一斉置換など経験したことがある方が多いと思います。
今回はDreamweaverで正規表現を使用して一斉置換する方法を紹介したいと思います。

最低限覚えておきたい正規表現

perlや.htaccessなどで使用される正規表現なのですが、 Dreamweaverで置換する際に、覚えておきたい正規表現は最低2つだけ。

(.*)$1です。


・・・おぼえていただけましたか?


では、実際に何か置換してみましょう。

<select>
  <option value="きらきら星">hoge</option>
  <option value="夏祭り">hoge</option>
  <option value="海">hoge</option>
</select>


hogeをvalue値と同じ値に置換します。


Dreamweaverで
ctrl+F(macの場合コマンド+F)

「検索および置換」ウィンドウが開きます。


正規表現を使用にチェックを入れる。


090811a.jpg

検索に<option value="(.*)">(.*)</option>

置換に<option value="$1">$1</option>


「一斉置換」をクリっと押してしまうと。

<select>
  <option value="きらきら星">きらきら星</option>
  <option value="夏祭り">夏祭り</option>
  <option value="海">海</option>
</select>


もう夏ですね。


最低限おさえておきたいトコロ

実際にサイトで置換する場合はもっと複雑だったり、
特定の部分だけだったり、さまざまな条件があります。

そこで、この考え方だけおさえておけば、あとでいくらでも応用がききます。

ずばりこれです。


/(.*)/(.*)/(.*)/

/$1/$2/$3/


つまり、(.*)の数だけ変数が作られ、
置換部分は$1や$2で指定できるということです。

たとえば、以下のような複数あるaタグを置換する場合

before

<a href="http://sample.jp/hokkaido/hokkaido/" target="_blank">北海道</a>
<a href="http://sample.jp/kansai/osaka/" target="_blank">大阪府</a>
<a href="http://sample.jp/kanto/tokyo/" target="_blank">東京都</a>

検索:<a href="http://sample.jp/(.*)/" target="_blank">(.*)</a>

置換:<a href="http://sample.jp/$1/{["$2"|urlencode]}/" target="_blank"> $2</a>

after

<a href="http://sample.jp/hokkaido/hokkaido/{["北海道"|urlencode]}/" target="_blank">北海道</a>
<a href="http://sample.jp/kansai/osaka/{["大阪府"|urlencode]}/" target="_blank">大阪府</a>
<a href="http://sample.jp/kanto/tokyo/{["東京都"|urlencode]}/" target="_blank">東京都</a>


さて、実はもっとスマートに置換をする方法もあるのですが、
それはまた次回。


ちなみに、正規表現の意味なのですが
(.*)でいうと、
.(ピリオド)が新行 (改行) 以外のすべての単一文字
*(アスタリスク)が直前の文字の 0 回以上の繰り返し

という意味です。

【参考】
正規表現 - adobe