如何使RegEx查询仅匹配整个字符串?

时间:2013-02-21 17:37:19

标签: regex vba

我在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 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式

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

如果您想要完全匹配,则必须指定开头(^)和结束($)..

[a-zA-Z]匹配单个字母

\s+匹配1到多个空格

\w+匹配一个单词..它类似于[a-zA-Z0-9_]+

\d+匹配1到多位数字