提取不在指定子字符串之前的特定子字符串

时间:2015-08-06 01:09:01

标签: regex vba vbscript catia

我有一个相对简单的问题但让我陷入困境。 我想让一个正则表达式在VBA中执行以下任务(VBScript_RegExp_5.5)。

给出这样的字符串:

"PrivateFactoryAsclsFactoryPrivateFactoryAsclsFactory"

我只想删除"Factory"之前没有"cls"的事件。对于这种特殊情况,如果所有匹配都被"_"正确替换,结果将如下所示:

"Private_AsclsFactoryPrivate_AsclsFactory"

当然,像"clsFactory|(Factory)"这样的简单排除技巧在VBA中不起作用,也不适用于后视。

1 个答案:

答案 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