我试图用VBA在Excel中捕获超过2个连续点。我使用以下正则表达式:"(\.{2,})"
如果我在这里尝试它似乎是正确的:https://regex101.com/
然而,Excel给了我不一致的结果。
“”。返回FALSE - >正确
“..”返回TRUE - >正确
“...”返回FALSE - >不正确
“...”。返回FALSE - >不正确
“...... ..”返回TRUE - >正确
(就在我复制粘贴在这里时,似乎Excel以某种方式将3个点合并为1个)
答案 0 :(得分:1)
是的,默认情况下,Excel似乎将...
替换为…
。如果您想要删除此自动更正,您可以进入选项 - >打样 - >自动更正选项(见下文),然后只需查找…
替换...
。或者你可以在你的正则表达式中加入…
,如下所示:(…|\.{2,})
答案 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
代码使用后期绑定,因此您无需引用任何其他库。