Life can only be understood backwards; but it must be lived forwards. -Soren Kierkegaard
リンク
(msdn) Regular Expression オブジェクトのプロパティとメソッド
JavaScript・VBScriptと正規表現
正規表現で使われる記号
正規表現Set objRE = New RegExp
上のSet文で生成されたobjRE(正規表現オブジェクト)は、プロパティとメソッドをもつ
プロパティ
Pattern | objRE.Pattern = "文字列"*文字列には下のメタ文字が使える。 |
IgnoreCase | objRE.IgnoreCase = True (大文字と小文字を区別しないとき)。デフォルトはFalse。 |
Global | objRE.Global = True (文字列全体を検索するとき)。デフォルトはFalse。 |
メソッド
Test | retVal = objRE.Test("検索対象の文字列")。「検索対象の文字列」をパターンでマッチング。一致した部分が1つ以上あるときはTrue、1つもなければFalseを返す。 |
Replace | strResult = objRE.Replace("検索対象の文字列", "置換する文字列")。「検索対象の文字列」をパターンでマッチング。一致した部分があれば、「置換する文字列」で置換。 |
Execute | Set Matches = regEx.Execute("検索対象の文字列")*Matchesはコレクションである。
「検索対象の文字列」をパターンでマッチング。Matchオブジェクトのコレクション(Matches)を返す。 |
Matchesコレクションのプロパティ
Count | Matches.CountでMatchオブジェクトの個数を返す。 |
Item | Matches.Item(0)で先頭のMatchオブジェクトにアクセスする。普通省略してMatches(0)のように書く。
|
Matchオブジェクトのプロパティ
FirstIndex | Match.FirstIndex 最初にマッチングに成功した位置を返す。文字列の先頭は0。 |
Length | Match.Length マッチした文字列の長さを返す。 |
Value | Match.Value マッチした文字列を返す。最初にマッチした文字列だったらMatches(0).Valueとなる。 |
主なメタ文字とエスケープシーケンス
^ | 文字列の先頭 |
$ | 文字列の末尾 |
¥n | 改行 |
. | 改行を除く任意の1文字。下の量指定子と組み合わせることが多い。 |
* | 直前のパターンの0回以上の繰り返し。「貪欲な」マッチとなるので、最短でマッチさせたいときは*? |
+ | 直前のパターンの1回以上の繰り返し。「貪欲なマッチング」 |
? | 直前のパターンが0回または1回現れる |
{m} | 直前のパターンがちょうどm回現れる。「貪欲なマッチング」 |
{m,} | 直前のパターンがm回以上現れる。「貪欲なマッチング」 |
{m,n} | 直前のパターンがm回以上、n回以下現れる。「貪欲なマッチング」 |
¥w | 単語を構成する文字(アルファベット、数字、アンダースコア) アルファベットだけのときは[a-zA-Z] |
¥W | 単語を構成する文字以外 |
¥d | 任意の数値。[0-9]と等価 |
¥D | 任意の数値以外の文字。[^0-9]と等価 |
¥s | 任意のスペース文字。[¥t¥r¥n¥v¥f]と等価 |
¥S | 任意のスペース以外の文字。[^ ¥t¥r¥n¥v¥f]と等価 |
¥t | タブにマッチ |
¥. | .にマッチ |
¥¥ | ¥にマッチ |
(…) | パターンをグループ化する、つまりカッコで囲まれた文字列を1つの固まりとする もう1つ、後方参照のためにキャプチャする。カッコは左から順に、¥1、¥2、¥3、…として参照できる 置換のときに威力を発揮する |
…|… | パターンの論理和 |
[…] | キャラクタクラス [ぁ-ん]でひらがなだけにマッチ [ァ-ヴ]でカタカナだけにマッチ |
[^…] | キャラクタクラスに含まれない文字 |
¥n | 後方参照 n番目の( )で囲まれた句にマッチ: "(学校).+¥1" は "学校.+学校" と同じ。
置換するときは $nがn番目の( )を受ける。下の使用例2参照 |
…(?=str) | 先読み 後ろにstrが続く…にマッチ |
…(?!str) | 否定先読み 後ろにstrが続かない…にマッチ |
…(?=■(?!●)) | 後ろに■が続き、かつ●が続かない…にマッチ |
(?<=str)… | 後読み 前にstrがある…にマッチ |
(?<!str)… | 否定後読み 前にstrがない…にマッチ |
(?<=(?<!●)■)… | 前に●がなく、直前に■がある…にマッチ |
先読みはサポートしても、後読みはサポートしない処理系もあるという。上から3つ目(否定先読み)までは動作確認済み。
使用例1
^¥s*$ | 空行にマッチ 半角スペース、タブは含まれる |
(ab)|(cd)|(ef) | "ab" または "cd" または "ef" にマッチ |
[ぁ-ん] | 全角ひらがな にマッチ |
[ァ-ヴー] | 全角カタカナ にマッチ |
[ぁ-ヴー] | ひらがな+全角カタカナ にマッチ |
[亜-熙] | 漢字 にマッチ |
[ぁ-ん亜-熙] | ひらがなと漢字 にマッチ(カタカナ以外) |
([ぁ-ん亜-熙]) | ひらがなと漢字の後の全角スペースにマッチ |
[ヲ-゚] | 半角カタカナ にマッチ |
[Ⅰ-Ⅹ] | ローマ数字 にマッチ |
[①-⑳] | 丸付き数字 にマッチ |
使用例2 ダブルクォーテーションを含む場合、後方参照の例
"<H1 style=""margin:0;"">" | "検索対象の文字列" にダブルクォーテーションが含まれるときは2つ重ねる。置換する文字列も同じようにする。【例】"<H2 style=""margin:20px;"">" |
"<H1>(.+)</H1>" | "<H2>$1</H2>"でタグだけを置換。 |
"(<H1>).+(</H1>)" | "$1…$2"でタグの中だけを置換。 |
"""" & "[^""]+" & """" | ダブルクォーテーションで囲まれた文字列(中にダブルクォーテーションを含まない)にマッチ。 |
3.5.4 正規表現エンジン
カンマ区切りの文字列を正規表現で表す