RegExpオブジェクト:Excel VBA入門 | 
    
| スポンサードリンク | |
| Sub test() Dim RE, Match, Matches Dim strPat As String Dim strTest As String Dim strAns As String strTest = Range("A2").Value '----検索される文字列 Set RE = CreateObject("VBScript.RegExp") strPat = Range("B2").Value '----検索するパターン With RE .Pattern = strPat '----パターンを設定します .IgnoreCase = True '----大文字と小文字を区別するFalseか、しないTrueか .Global = True '----文字列全体を検索するTrueか、しないFalseか End With Set Matches = RE.Execute(strTest) For Each Match In Matches strAns = strAns & "一致する文字列が見つかった位置は、" & Match.FirstIndex & " です。" & _ "一致した文字列は、" & Match.Value & " です。" & vbCrLf Next MsgBox strAns End Sub  | 
 
 
| Patternプロパティ | 検索するパターンを設定する | 
| IgnoreCaseプロパティ | 検索するときに大文字と小文字を区別する(既定値:False)か、区別しない(True)かを設定する | 
| Globalプロパティ | 検索文字列全体について検索する(True)か、最初の一致を検索する(既定値:False)のかを設定する | 
| 文字 | 内容 | 
| \ | 次に続く文字が特別な文字またはリテラルであることを示す nなら文字n、\nなら改行文字になる。\\とすると \という文字のことになる  | 
      
| ^ | 文字列の先頭 | 
| $ | 文字列の末尾 | 
| * | 直前の文字と0回以上一致する | 
| + | 直前の文字と1回以上一致する | 
| ? | 直前の文字と0回または1回一致する | 
| . (ドット) | 改行文字(\n)以外の文字と一致する | 
| [ ] | [  ] 内に含まれるいずれかの文字に一致します [a-z]のように「-」を使って範囲指定することができます  | 
      
| [^ ] | [^ ] 内に含まれている文字以外に一致します。 [^a-z]のように「-」を使って範囲指定することができます  | 
      
| ( ) | ( )内に指定した文字と一致します | 
| | | 複数の文字列を1つのパターンとしてつなぎます(OR,論理和と同じような使い方) a|cとするとaまたはcと一致します  | 
      
| \b | 単語の境界にマッチします(境界とはスペースや末尾の部分) 「ACBCABAB」で「AB\b」とすると末尾のABと一致。「ACBCAB AB」なら「ACBCAB AB」と一致  | 
      
| \B | 単語の境界出ない部分と一致します 「ACABCAB AB」で「AB\B」とすると、「ACABCAB AB」と一致  | 
      
| \d | 数字と一致します。[0-9]と同じ | 
| \D | 数字以外と一致します。[^0-9]と同じ | 
| \n | 改行文字と一致します | 
| \f | フォームフィード(改ページ)文字と一致します | 
| \r | キャリッジリターン(行頭復帰)文字と一致します | 
| \t | タブと一致します | 
| \v | 垂直タブと一致します。 | 
| \w | 単語に使用される文字と一致します。[A-Za-z0-9_]と同じ。アンダースコアも含まれる。 | 
| \W | 単語に使用される文字以外と一致します。[^A-Za-z0-9_]と同じ | 
| \s | スペース、タブ、フォームフィード文字などと一致します。[ \f\n\r\t\v]と同じ | 
| \S | 空白文字のない部分と一致します。[^ \f\n\r\t\v]と同じ | 
| \nnn | nに指定した8進数のエスケープ値と一致します。ASCII コードが利用できることになります 文字Aを指定したいなら、=DEC2OCT(CODE("A"))=101なので、\101とすることができる  | 
      
| \xnn | nnに指定した16進数のエスケープ値と一致します。 文字Aを指定したいなら、=DEC2HEX(CODE("A"))=41なので、\x41とすることができる  | 
      
| {x} | 直前の文字とx回に一致します | 
| {x,} | 直前の文字とx回以上に一致します | 
| {x,y} | 直前の文字とx回以上、y回以下に一致します | 
| Testメソッド | object.Test(string) パターンに一致する文字列が検索されたらTrueを返します。見つからないとFalseを返します。  | 
| Replaceメソッド | object.Replace(string1, string2) 検索されたら置換文字列(string2)と置き換えます  | 
| Executeメソッド | object.Execute(string) 指定された文字列を正規表現で検索します 文字列内で見つかった文字列ごとに存在するMatchオブジェクトを含む、Matchesコレクションを返します。  | 
| Sub test() Dim RE, Match, Matches Dim strPat As String Dim strTest As String Dim strAns As String strTest = Range("A2").Value strPat = Range("B2").Value Set RE = CreateObject("VBScript.RegExp") With RE .Pattern = strPat ' パターンを設定します。 .IgnoreCase = True ' 大文字と小文字を区別しないように設定します。 .Global = True ' 文字列全体を検索するように設定します。 End With Range("C2").Value = RE.Replace(strTest, "QQ") End Sub  | 
| Countプロパティ | コレクション内でMatchオブジェクトの個数を返します。 | 
| Itemプロパティ | コレクションのItemプロパティです。 | 
| FirstIndexプロパティ | 検索対象の文字列内で一致が見つかった場所を返します。 最初は0から始まります。  | 
      
| Lengthプロパティ | 一致した文字列の長さを返します | 
| Valueプロパティ | 文字列内で一致した値またはテキストを返します。 | 
| Sub test() Dim RE, Match, Matches Dim strPat As String Dim strTest As String Dim strAns As String strTest = Range("A2").Value '----検索される文字列 Set RE = CreateObject("VBScript.RegExp") strPat = Range("B2").Value '----検索するパターン With RE .Pattern = strPat '----パターンを設定します .IgnoreCase = True '----大文字と小文字を区別するFalseか、しないTrueか .Global = True '----文字列全体を検索するTrueか、しないFalseか End With Set Matches = RE.Execute(strTest) MsgBox Matches.Count & "個見つかりました。" For Each Match In Matches strAns = strAns & "一致する文字列が見つかった位置は、" & Match.FirstIndex & " です。" & _ "一致した文字列は、" & Match.Value & " です。" & vbCrLf Next MsgBox strAns End Sub  | 
スポンサードリンク
PageViewCounter
 
 Since2006/2/27