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