正規表現で文字列を置換

正規表現を利用しパターンに一致する文字列を置換する。

正規表現のパターンに一致した文字列を置換します。

VBAで正規表現を利用するにはRegExpオブジェクトを利用します。
RegExpオブジェクトのReplaceメソッドを利用してパターンに一致する文字列を置換します。
サンプルコードでは対象の文字列内にある 0~3 の1文字を全て * に置換しています。

'******************************************************************
' パターンに一致する文字列を指定の文字列に置換
'******************************************************************
Sub Main_Replace()

    '置換対象の文字列(この文字列内に置換したい文字列パターンがあればその部分を置換)
    Dim sString  As String
    sString = "AB01234aa5b7cc536xyz"
    
    '置換させるパターン
    Dim sPattern As String
    sPattern = "[0-3]"
    
    '置換文字
    Dim sReplace As String
    sReplace = "*"

    '置換処理
    Dim sReturn As String
    sReturn = runRegExp_Rep(sString, sPattern, sReplace)
    
    Debug.Print "置換前:" & sString
    Debug.Print "置換後:" & sReturn

End Sub

'******************************************************************
' 正規表現で文字列を置換
'------------------------------------------------------------------
'  第1引数:置換前の文字列
'  第2引数:正規表現のパターン
'  第3引数:置換文字列
'------------------------------------------------------------------
'  戻り値 :置換後の文字列
'******************************************************************
Function runRegExp_Rep(getStr As String, getPtn As String, getRep As String) As String

    Dim oReg As Object
    Set oReg = CreateObject("VBScript.RegExp")
    oReg.Pattern = getPtn   '検索するパターンを設定
    oReg.IgnoreCase = True  '大文字と小文字を区別(True:しない、Flase:する)
    oReg.Global = True      '文字列全体を検索(True:する、Flase:しない)

    'パターンに一致する文字列を引数:getRepの値に置換
    runRegExp_Rep = oReg.Replace(getStr, getRep)

    Set oReg = Nothing
    
End Function
Print

 ■事項結果