0

因此,我从 Excel 中的单元格中获取文本,然后在该文本中搜索特定短语。现在,只有当它是完全匹配的单词时,我才需要返回 true。例如,如果文本是“The Quick brown fox jumped over the lazy dog”并且我正在搜索“Qui”,它应该返回 false,但如果我搜索“Quick”,它应该返回 true。同样,“brown Quick”应该返回 false,“Quick brown”应该返回 true。

所以,我在 VBA 中使用正则表达式尝试了这个并想出了

 With regex
    .Pattern = " *" & search & " *"
 End With

使用此代码我无法生成所需的输出。我需要检查搜索短语之前的字符是空格还是什么都没有,搜索短语末尾的字符也是空格还是什么都没有。请帮助我。

4

1 回答 1

1

试试这样:

Public Function TestRegex(str As String)
    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")
    
    With RegEx
        .Pattern = "\b" & str & "\b"
        .Global = True
    End With
    
    TestRegex = RegEx.Test("The Quick brown fox jumped over the lazy dog")
End Function

结果:

?TestRegex("Qui")
False

?TestRegex("Quick")
True

?TestRegex("brown Quick")
False

?TestRegex("Quick brown")
True

通过使用单词边界 ( \b),您可以在正则表达式模式中指定您正在搜索完整的单词。

于 2020-12-08T08:27:20.527 回答