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(正規表現オブジェクト)は、プロパティとメソッドをもつ

プロパティ

PatternobjRE.Pattern = "文字列"*文字列には下のメタ文字が使える。
IgnoreCaseobjRE.IgnoreCase = True (大文字と小文字を区別しないとき)。デフォルトはFalse。
GlobalobjRE.Global = True (文字列全体を検索するとき)。デフォルトはFalse。

メソッド

TestretVal = objRE.Test("検索対象の文字列")。「検索対象の文字列」をパターンでマッチング。一致した部分が1つ以上あるときはTrue、1つもなければFalseを返す。
ReplacestrResult = objRE.Replace("検索対象の文字列", "置換する文字列")。「検索対象の文字列」をパターンでマッチング。一致した部分があれば、「置換する文字列」で置換。
ExecuteSet Matches = regEx.Execute("検索対象の文字列")*Matchesはコレクションである。
「検索対象の文字列」をパターンでマッチング。Matchオブジェクトのコレクション(Matches)を返す。

Matchesコレクションのプロパティ

CountMatches.CountでMatchオブジェクトの個数を返す。
ItemMatches.Item(0)で先頭のMatchオブジェクトにアクセスする。普通省略してMatches(0)のように書く。

Matchオブジェクトのプロパティ

FirstIndexMatch.FirstIndex  最初にマッチングに成功した位置を返す。文字列の先頭は0。
LengthMatch.Length  マッチした文字列の長さを返す。
ValueMatch.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、…として参照できる
置換のときに威力を発揮する
…|…パターンの論理和
[…]キャラクタクラス [ぁ-ん]でひらがなだけにマッチ [ァ-ヴ]でカタカナだけにマッチ
[^…]キャラクタクラスに含まれない文字

後方参照と前後読みK2Editorでの正規表現の解説

 ¥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 正規表現エンジン

カンマ区切りの文字列を正規表現で表す


PageTop▲

Copyright © 2010 "Junshi Toyoda, Okinawa Japan"