1

Excel 2012 で VBA を使用して、セルの内容を正規表現に一致させていますが、機能していません。

次のコードを実行しています。

Dim r1 As New RegExp
r1.Pattern = "(.)(\s+)?((?:[a-z][a-z]+))(\s+)(\d+)?"
r1.IgnoreCase = True

For i = 1 To 5
    If r1.Test(Sheet3.Cells.Item(i, 5)) = True Then
        MsgBox ("MATCH: " & Sheet3.Cells.Item(i, 5))
    Else
        MsgBox ("NOT MATCH: " & Sheet3.Cells.Item(i, 5))
    End If
Next i

したがって、「A Person 01」という文字列には一致するはずですが、「A Person abc 01」には一致しません。

しかし、expressin は文字列の後半にあるため、両方に一致しています。文字列全体のみに一致させるにはどうすればよいですか? したがって、セルの内容全体が次の場合にのみ一致します: 1 つの文字、スペース、単語、スペース、数字

どんな助けでも大歓迎です!

4

1 に答える 1

2

この正規表現を使用できます

^[a-zA-Z]\s+\w+\s+\d+$

正確に一致させたい場合は、start( ^) と end( $) を指定する必要があります。

[a-zA-Z]単一のアルファベットに一致

\s+1 個以上のスペースに一致

\w+単語に一致..似ている[a-zA-Z0-9_]+

\d+1桁以上の数字に一致

于 2013-02-21T17:40:43.327 に答える