vbaで正規表現
参考サイト
参考サイト
Sub macro1() 'RegExpオブジェクトの作成 Dim reg As Object Set reg = CreateObject("VBScript.RegExp") '正規表現の指定 With reg .Pattern = "[0-9]" 'パターンを指定 .IgnoreCase = False '大文字と小文字を区別するか(False)、しないか(True) .Global = True '文字列全体を検索するか(True)、しないか(False) End With Dim str1 As String, str2 As String str1 = "東京1大阪2名古屋3" str2 = reg.Replace(str1, ",") '指定した正規表現を第2引数の区切り文字に置換 MsgBox str2 End Sub
参考サイト
Sub
Sample2()
'正規表現を使用して文字列を検索する
'**Executeメソッド**
Dim
Re
As
Object
Dim
Mc
As
Object
Dim
msg
As
String
Dim
i
As
Long
'正規表現を利用する為のRegExpオブジェクトを作成
Set
Re = CreateObject(
"VBScript.RegExp"
)
With
Re
'正規表現パターンの設定
'[A-Z,a-z,0-9]で全てのアルファベットと0~9範囲の数値
'「+」で直前に指定した文字の繰り返しを表す
'[.][o][m]で「.com」という文字を表す
'この指定で「.com」で終わる文字列という意味になる
.Pattern =
"[A-Z,a-z,0-9]+[.][o][m]"
'複数マッチを有効
.Global =
True
'セルA1に入力された文字列に対して検索を実行する
Set
Mc = .Execute(Cells(1, 1).Value)
End
With
With
Mc
'対象文字の有無を判定
If
.Count > 0
Then
For
i = 0
To
.Count - 1
'対象文字「有り」の場合、文字を取得
msg = msg & i + 1 &
"番目の文字列:"
& _
.Item(i).Value & vbLf
Next
Else
'対象文字「なし」の場合の文字列
msg =
"該当なし"
End
If
End
With
'メッセージボックスの表示
If
msg =
"該当なし"
Then
MsgBox msg, vbCritical
Else
MsgBox msg, vbInformation
End
If
End
Sub
参考サイト
RegExpオブジェクトのプロパティとメソッド
Patternプロパティ | 正規表現で使用するパターンを設定します。.*や[A-Z]、(田中|鈴木)などの文字列です。 |
IgnoreCaseプロパティ | 大文字と小文字を区別しないときにTrueを設定します。デフォルトはFalseです。 |
Globalプロパティ | 検索対象の文字列内で、文字列全体を検索するにはTrueを設定します。デフォルトではFalseです。 |
Testメソッド | 正規表現によるマッチングを行います。パターンと一致した場合はTrueを返します。 |
Replaceメソッド | 検索文字列の中で正規表現によるマッチングを行い、成功するとそのマッチした部分を置換文字列と置き換えます。 |
Executeメソッド | Testメソッドはマッチングが成功したかどうかをTrue/Falseで返します。Executeメソッドは、マッチングの結果をMatchesコレクションとして返します。MatchesコレクションはMatchオブジェクトの集合です。 |
MatchesコレクションはExecuteメソッドによって返されるコレクションです。Matchesコレクションには0個以上のMatchオブジェクトが含まれます。つまり、Executeメソッドの結果返ってきたMatchesコレクションにMatchオブジェクトが存在しなかったら、マッチングは失敗したということです。
Matchesコレクションのプロパティとメソッド
Countプロパティ | Matchesコレクション内でMatchオブジェクトの個数を返します。これを調べるとマッチングの成功/失敗がわかります。 |
Itemプロパティ | いわゆる一般的なコレクションのItemプロパティです。普通はMatches(1)のようにアクセスするので使うことはないでしょう。 |
Matchオブジェクトのプロパティとメソッド
FirstIndexプロパティ | 最初にマッチングに成功した位置を返します。文字列の先頭は0から始まります。 |
Lengthプロパティ | マッチした文字列の長さを返します。 |
Valueプロパティ | マッチした文字列を返します。 |
主なメタ文字とエスケープシーケンス
title | title |
---|---|
^ | 文字列の先頭 |
$ | 文字列の末尾 |
\n | 改行 |
. | 改行を除く任意の1文字 |
* | 直前のパターンの0回以上の繰り返し |
+ | 直前のパターンの1回以上の繰り返し |
? | 直前のパターンが0回または1回現れる |
\d | 任意の数値 |
\D | 任意の数値以外の文字 |
\s | 任意のスペース文字 |
\S | 任意のスペース以外の文字 |
() | パターンのグループ化 |
| | パターンの論理和 |
[] | キャラクタクラス |