RegExpオブジェクトを使用するためには、
Microsoft VBScript Regular Expressions 5.5の参照設定をオンにしてください。
VBScriptのオブジェクトなんですね。
詳しくは正規表現のMSDNを見てね
http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp
http://www.microsoft.com/japan/msdn/columns/scripting/scripting121399.asp
URLからドメイン名を抽出するサンプルです。
ドメイン名は、URLのうち//と/で囲まれる文字列で、はじめのwww.以外の部分としました。
ソースコードの核はたった2行です。検索パターンの設定と、置換の実行です。
正規表現は、短いコードで強力な文字列操作が可能となります。
Sub ドメイン抽出()
Dim 正規表現オブジェクト As New RegExp
Dim 対象文字列 As String
Dim 検索パターン As String
Dim 置換後文字列 As String
対象文字列 = "http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp"
検索パターン = "^http:/(/www.|/)([^/]+)/.+"
置換後文字列 = "$_" & vbNewLine & "ドメイン:$2"
正規表現オブジェクト.Pattern = 検索パターン
MsgBox 正規表現オブジェクト.Replace(対象文字列, 置換後文字列)
End Sub
正規表現を使いこなすには検索パターンの文法を覚えなければなりません。
サンプルでは、^http:/(/www.|/)([^/]+)/.+の部分です。
では、ちょっと解説
はじめの^http:/(/www.|/)は文字列がhttp:/ではじまり、次が/www.か/であることを表現しています。
次の([^/]+)はスラッシュ以外の連続する文字列です。ここがドメイン名となります。
最後の/.+はスラッシュとそれ以後に連続する0個以上の文字を示します。
上のサンプルではさらに置換後文字列にも工夫があります。
マッチ文字列$を使用している点です。
$_は対象文字列全体をあらわします。
&2は検索パターンの2番目の括弧にマッチする文字列という意味で、([^/])の部分のことです。
ちょっと複雑なサンプルですね。。
おまけにテキストファイルを置換するツールを作っちゃいました。
実はこのツール、ステップバイステップのhtmlコードを修正をしたかったのが、キッカケです。