我有以下用于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