我有一个相对简单的问题但让我陷入困境。 我想让一个正则表达式在VBA中执行以下任务(VBScript_RegExp_5.5)。
给出这样的字符串:
"PrivateFactoryAsclsFactoryPrivateFactoryAsclsFactory"
我只想删除"Factory"
之前没有"cls"
的事件。对于这种特殊情况,如果所有匹配都被"_"
正确替换,结果将如下所示:
"Private_AsclsFactoryPrivate_AsclsFactory"
当然,像"clsFactory|(Factory)"
这样的简单排除技巧在VBA中不起作用,也不适用于后视。
答案 0 :(得分:2)
你实际上可以使用VBScript Regex库进行一些黑客攻击。以下模式匹配任何两个或更少的字符或任何三个不是"cls"
的字符(使用否定前瞻),后跟"Factory"
。
Const strText As String = "PrivateFactoryAsclsFactoryPrivateFactoryAsclsFactory"
With CreateObject("VBScript.RegExp")
.Pattern = "(^.{0,2}|(?!cls).{3})Factory"
.Global = True
Debug.Print .Replace(strText, "$1_")
End With
输出:
Private_AsclsFactoryPrivate_AsclsFactory