Visual Studioで正規表現による置換

次はいつ書けるかわからないとか言ったような気がしなくもないですが、気になることがあったので備忘録追加。
今回は、Visual Studioで正規表現を用いて置換を行う方法です。VSのバージョンは2010。
今回弄るのは、以下のHTMLソース。
学校のある課題で使う、Webサイトのモックアップの一部です。

            <table class="tblSearch">
                <colgroup style="width:4.5em"></colgroup><!--商品番号-->
                <colgroup style="width:8em"></colgroup><!--メーカー名-->
                <colgroup style="width:20em" /><!--商品名-->
                <colgroup span="2" style="width:5.5em" /><!--販売価格, 原価, メーカID-->
                <thead>
                    <tr style="text-align:center">
                        <th>商品番号</th>
                        <th>メーカ名</th>
                        <th>商品名</th>
                        <th>販売価格</th>
                        <th>在庫数</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>102</td>
                        <td>Intel</td>
                        <td>PentiumIII 1GHz TRAY(バルク)</td>
                        <td>138000</td>
                        <td>100</td>
                    </tr>
                    <tr>
                        <td>103</td>
                        <td>Intel</td>
                        <td>PentiumIII 500/256 FCPGA リテール版</td>
                        <td>21800</td>
                        <td>100</td>
                    </tr>
                    <tr>
                        <td>104</td>
                        <td>Intel</td>
                        <td>PentiumIII 533/256 FCPGA リテール版</td>
                        <td>価格無し</td>
                        <td>0</td>
                    </tr>
                    <tr>
                        <td>105</td>
                        <td>Intel</td>
                        <td>PentiumIII 533/256</td>
                        <td>19800</td>
                        <td>100</td>
                    </tr>
                    <tr>
                        <td>106</td>
                        <td>Intel</td>
                        <td>PentiumIII 550/256 FCPGA リテール版</td>
                        <td>22800</td>
                        <td>100</td>
                    </tr>
                    <tr>
                        <td>107</td>
                        <td>Intel</td>
                        <td>PentiumIII 550/256 FCPGA</td>
                        <td>21800</td>
                        <td>100</td>
                    </tr>
                </tbody>
            </table>

この中で、表の中の

<td>~</td>

に挟まれているPentium云々を、

 <a href="#">~</a> 

を付けた形に置換したいと思ったのがきっかけです。

とりあえず、お決まりのようにインターネットで情報を漁っていきます。
最初ワイルドカードで調べてたものの、正規表現による置換もチラホラ。あれ、正規表現の方ならできそうジャマイカ。
というわけで調べていきます。
そして最終的に
chikan

  • 検索文字列
    \<td\>{Pentium.*}\</td\>
  • 置換後文字列
    <td><a href="#">\1</a></td>

という感じに。

検索・置換画面で下部の条件にチェックを入れて正規表現を選択して、検索条件や置換後文字列を指定します。
検索文字列では、
・()や

< >

はエスケープ文字でエスケープ処理しなければならない
    例) 「(」→「\n」, 「<」→「\<」 ※環境により、「¥(半角)」はバックスラッシュになったり円マークになったりします。
・正規表現では、ワイルドカードは「*」→「.*」
・検索文字列中で{ }で囲った部分は、{ }ごとに置換後文字列にて「\1」~「\9」まで使える
だそうです。

以上により、上記の検索文字列は、<td>~</td>タグ内にある「Pentium」から始まる文字列を検索する、ということになります。
そして置換文字列は、「\1」で検索文字列で「{ }」で囲われた部分を示し、「Pentium」で始まる文字列をそのまま持ってきて、前後に

<a href="#">~</a>

を付加する、ということになります。

とりあえず、こんな感じで、希望通り置換することができました。
例によってこれで合ってるかは教えて偉い人

そんなわけで今回はここまで。
ではまた次の機会に・・・

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中