カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

VBでの正規表現

この記事は最終更新日から1年以上経過しています。

VBで正規表現を使った文字列検索を実装します。

Dim regEx As Object
Dim Matches As Variant

'正規表現オブジェクト
Set regEx = CreateObject("VBScript.RegExp")
'検索文字列全体について検索する
'regEx.Global = True
'最初の一致を検索する(既定値)
'regEx.Global = False

'検索するときに大文字と小文字を区別しない
'regEx.IgnoreCase = True
'検索するときに大文字と小文字を区別する(既定値)
'regEx.IgnoreCase = False

'検索するパターン
regEx.Pattern = "検索パターン"

'検索するだけの場合
'パターンにマッチする文字列が検索されたらTrue、見つからなければFalse
'boolRst = regEx.Test("検索対象となる文字列")

'一致した文字列を置換文字列(string2)と置き換える
'string = regEx.Replace("置き換え対象となる文字列", "string2")

'検索実行
Set Matches = regEx.Execute("検索対象となる文字列")

'1番目にマッチした文字列を取り出す
'=Matches(0).Value

        'パターンにマッチした文字列を全て取り出す
    If Matches.Count > 0 Then
        For Each Match In Matches
            'マッチした位置 (先頭 = 0)
            i = Match.FirstIndex
            'マッチした文字列
            'Match.Value
            'マッチした文字列の長さ
            'Match.Length
        Next
    End If

'オブジェクトを破棄(メモリリークを防ぐため必須)
Set Matches = Nothing
Set regEx = Nothing

サブパターンにマッチした文字列を取り出すには

'1番目にマッチした文字列を取り出す
If Matches.Count = 0 Then
    myRegexSub = ""
Else
    If Matches(0).SubMatches.Count = 0 Then
        myRegexSub = ""
    Else
        myRegexSub = Matches(0).SubMatches(0)
    End If
End If

サブパターンにマッチした文字列のうち一部だけ置き換える

'検索するパターン
regEx.pattern = "([0-9]+)([a-z])([0-9]+)"
'一致した文字列を置換文字列(例としてハイフン)と置き換える
string = regEx.Replace("置き換え対象の文字列", "$1-$3")

この記事がお役に立ちましたらシェアお願いします

2,237 views

コメントは受け付けていません。