我有以下用于Excel的VBA代码,可以查找连续的大写字母并将其拆分。

Function SplitCaps(strIn As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Global = True
    .Pattern = "([A-Z])([A-Z])"
    SplitCaps = .Replace(strIn, "$1 $2")
End With
End Function

该代码在以下情况下有效:
史密斯
史密斯DC
输出:

史密斯
史密斯DC

但是,当连续的字母超过2个时,vba将不起作用。
我尝试使用{2,3}量词,但是似乎无法进行以下工作:
SplitCaps = .Replace(strIn, "$1 $2 $3")

最佳答案

在三个或更多连续大写字母的情况下,匹配项确实重叠。补救措施是连续两次应用模式:

With objRegex
    .Global = True
    .Pattern = "([A-Z])([A-Z])"
    SplitCaps = .Replace(strIn, "$1 $2")
    SplitCaps = .Replace(SplitCaps, "$1 $2")
End With

10-06 08:54