vbaで正規表現

Quick Edit Pencil
参考サイト
 
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プロパティマッチした文字列を返します。

主なメタ文字とエスケープシーケンス

titletitle
^文字列の先頭
$文字列の末尾
\n改行
.改行を除く任意の1文字
*直前のパターンの0回以上の繰り返し
+直前のパターンの1回以上の繰り返し
?直前のパターンが0回または1回現れる
\d任意の数値
\D任意の数値以外の文字
\s任意のスペース文字
\S任意のスペース以外の文字
()パターンのグループ化
|パターンの論理和
[]キャラクタクラス

このブログの人気の投稿

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

簡単 YouTube動画をダウンロード、音声のみ保存する方法 2019

DOMノードオブジェクトを文字列に変換する

ヤバい!JAPANNEXT WQHD対応 27型ワイド液晶ディスプレイ「JN-IPS2716WQHD」を注文してみた!!!

決定版 Edgeでローカルファイルを開く パワーシェルスクリプト (ウインドウズでドロップレット)

PowerShellでJPG画像のリサイズとウォーターマーク画像との合成を同時に行う