Excel-VBA连续点与正则表达式

时间:2017-12-18 16:48:38

标签: excel vba excel-vba

我试图用VBA在Excel中捕获超过2个连续点。我使用以下正则表达式:"(\.{2,})"

如果我在这里尝试它似乎是正确的:https://regex101.com/

然而,Excel给了我不一致的结果。

“”。返回FALSE - >正确

“..”返回TRUE - >正确

“...”返回FALSE - >不正确

“...”。返回FALSE - >不正确

“...... ..”返回TRUE - >正确

(就在我复制粘贴在这里时,似乎Excel以某种方式将3个点合并为1个)

2 个答案:

答案 0 :(得分:1)

是的,默认情况下,Excel似乎将...替换为。如果您想要删除此自动更正,您可以进入选项 - >打样 - >自动更正选项(见下文),然后只需查找替换...。或者你可以在你的正则表达式中加入,如下所示:(…|\.{2,})

Capture

答案 1 :(得分:0)

尝试这样,它对我来说非常好:

Option Explicit

Public Function TryRegex(s As String) As Boolean

    Dim regEx           As Object
    Dim inputMatches    As Object
    Dim regExString     As String
    Set regEx = CreateObject("VBScript.RegExp")
    With regEx
        .Pattern = "(\.{2,})"
        .IgnoreCase = True
        .Global = True
        Set inputMatches = .Execute(s)
        TryRegex = regEx.test(s)
    End With
End Function

Public Sub TestMe()
    Debug.Print TryRegex(".")                       'False
    Debug.Print TryRegex("..")                      'True
    Debug.Print TryRegex("...")                     'True
    Debug.Print TryRegex("....")                    'True
    Debug.Print TryRegex(".I.live.in.submarine.")   'False
    Debug.Print TryRegex(".a.yellow.one..")         'True
End Sub

代码使用后期绑定,因此您无需引用任何其他库。