- VB,VBA
- 2009-11-13 - 更新:2017-08-18
この記事は最終更新日から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")
5,764 views