带有正则表达式的Excel-VBA连续点

问题描述 投票:2回答:2

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

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

但是Excel给了我不一致的结果。

“”返回FALSE - >正确

“..”返回TRUE - >正确

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

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

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

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

excel vba excel-vba
2个回答
1
投票

是的所以它看起来像Excel默认用...替换。如果你想删除这个自动更正,你可以进入选项 - >打样 - >自动更正选项(见下文),然后只需要找到替换...。或者你可以在你的正则表达式中包含(…|\.{2,})

Capture


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

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

© www.soinside.com 2019 - 2024. All rights reserved.