正規表現とは、文字列の集合を一つの文字列で表現する方法の一つである。正則表現とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。
正規表現のまとめをのっけときます。
■正規表現まず最初に・・・
Set オブジェクト1 = CreateObject("VBScript.RegExp")
オブジェクト1.Pattern = "正規表現"
オブジェクト1.IgnoreCase = (True|False) 'T:大文字小文字区別しない、F:区別する(デフォルト)
オブジェクト1.Global = (True|False) 'T:繰返しマッチする、F:繰返しマッチしない(デフォルト)
オブジェクト1.Test("検査文字列") '結果を(True|False)で返す
Set オブジェクト2 = オブジェクト1.Execute("検査文字列") '結果をオブジェクトで返す
オブジェクト2.Count 'マッチした数を返す< オブジェクト2.Item(?).FirstIndex '何文字目にマッチしたか返す(最初の文字は0) オブジェクト2.Item(?).Length 'マッチした文字数 オブジェクト2.Item(?).Value 'マッチした文字列 オブジェクト2.Item(?).SubMatches.Count 'マッチした文字列のうち()部分の数 オブジェクト2.Item(?).SubMatches.Item(??) '()内でマッチした文字列 ・さんぷるこーど
実行結果---
マッチした数 :1
何文字目にマッチ:0
マッチの文字数 :9
マッチした文字列:〒123-4567
()でヒットした数:3
123-4567
123
4567
---
■メタ文字一覧
正規表現のまとめをのっけときます。
■正規表現まず最初に・・・
Set オブジェクト1 = CreateObject("VBScript.RegExp")
オブジェクト1.Pattern = "正規表現"
オブジェクト1.IgnoreCase = (True|False) 'T:大文字小文字区別しない、F:区別する(デフォルト)
オブジェクト1.Global = (True|False) 'T:繰返しマッチする、F:繰返しマッチしない(デフォルト)
オブジェクト1.Test("検査文字列") '結果を(True|False)で返す
Set オブジェクト2 = オブジェクト1.Execute("検査文字列") '結果をオブジェクトで返す
オブジェクト2.Count 'マッチした数を返す< オブジェクト2.Item(?).FirstIndex '何文字目にマッチしたか返す(最初の文字は0) オブジェクト2.Item(?).Length 'マッチした文字数 オブジェクト2.Item(?).Value 'マッチした文字列 オブジェクト2.Item(?).SubMatches.Count 'マッチした文字列のうち()部分の数 オブジェクト2.Item(?).SubMatches.Item(??) '()内でマッチした文字列 ・さんぷるこーど
Sub SampleCode()
Dim Reg As Object, result As Object
Set Reg = CreateObject("VBScript.RegExp")
Reg.Pattern = "〒((\d{3})-(\d{4}))" '正規表現セット
Set result = Reg.Execute("〒123-4567") '検査する文字列
Dim x As Integer, y As Integer
If 0 < result.Count Then Debug.Print "マッチした数 :" & result.Count Debug.Print "" For x = 0 To result.Count - 1 Debug.Print "何文字目にマッチ:" & result.Item(x).FirstIndex Debug.Print "マッチの文字数 :" & result.Item(x).Length Debug.Print "マッチした文字列:" & result.Item(x).Value Debug.Print "()でヒットした数:" & result.Item(x).Submatches.Count If 0 < result.Item(x).Submatches.Count Then '()内でマッチした内容を表示 For y = 0 To result.Item(x).Submatches.Count - 1 Debug.Print result.Item(x).Submatches.Item(y) Next End If Next End If Debug.Print "---" End Sub
実行結果---
マッチした数 :1
何文字目にマッチ:0
マッチの文字数 :9
マッチした文字列:〒123-4567
()でヒットした数:3
123-4567
123
4567
---
■メタ文字一覧
メタ文字 | 意味 |
. | 任意の一文字 |
[(文字列)] | []内の任意の一文字 |
[^(文字列)] | []内の文字列以外の任意の一文字。 |
[0-9] | 0~9のうち任意の一文字、[2-7]なら2~7の任意の一文字 |
\d | 0~9のうち任意の一文字。[0-9]は\dと同義 |
\D | 0~9以外の任意の一文字。[^0-9]。\d以外が\D |
[a-zA-Z] | 任意のアルファベット一文字 |
\w | [a-zA-Z_0-9]と同義 |
\W | \w以外。[^a-zA-Z_0-9]。 |
\s | 空白文字(半角スペース,タブ,改行)の任意の一文字 |
\s | 空白文字(半角スペース,タブ,改行)以外の任意の一文字 |
\ | メタ文字をエスケープする |
* | 0回以上繰り返す |
+ | 1回以上繰り返す |
{m} | m回繰り返す |
{m,} | m回以上繰り返す |
{m,n} | m回以上、n回以下繰り返す |
? | 0回か1回繰り返す |
| | |の前後のどちらかにマッチするか調べる |
() | グループ化および()内でマッチした内容を記憶する |
(?:) | ()内でマッチした内容を記憶させない |
0 件のコメント:
コメントを投稿