正規表現
Excel VBA で 正規表現 を使う時がきた。
【環境】
Excel:2010
Excel:2010
準備
参照設定
[ツール]-[参照設定]
Microsoft VBScript Regular Expressions 5.5にチェック。
これで、下記のように宣言できる。
Dim objRE As New RegExp
参照設定をしない場合は、下記のごとく。
Dim objRE As Object
Set objRE = CreateObject("VBScript.RegExp")
置換
HTML タグ除去
Dim objRE As Object
Set objRE = CreateObject("VBScript.RegExp")
objRE.Pattern = "<[^>]*>"
objRE.Global = True
Dim strHoge as String
strHoge = "hoge
"
strHoge = objRE.Replace(strHoge, vbNullString)
抽出
[123]abc[789]xyzにおいて、[] で括られたもの以外
つまり、abcxyz を抽出する場合。
Dim objRE As Object
Set objRE = CreateObject("VBScript.RegExp")
objRE.Pattern = "\[.*?\]"
objRE.Global = True
Dim strHoge as String
strHoge = "[123]abc[789]xyz"
strHoge = objRE.Replace(strHoge, vbNullString)
書いてみて思った。
やっていることは、HTML タグ除去と同じだw
考えてみれば当然なんだけど
せっかくなので残しておく。
抽出
[123]abc[789]xyzここから、123, 789 を抽出したい場合。
Dim objRE As Object
Set objRE = CreateObject("VBScript.RegExp")
objRE.Pattern = "\[(.*?)\]"
objRE.Global = True
Dim strHoge as String
strHoge = "[123]abc[789]xyz"
strHoge = objRE.execute(strHoge)
If strHoge.Count > 0 Then
Dim index As Integer
For index = 0 To strHoge.Count - 1
MsgBox strHoge(index).SubMatches(0)
Next index
End If
参考サイト
マイナビニュース > パソコン:正規表現を用いてHTTPタグを除去するVBAを記述する