VBA不支持正则正向后行断言,如何替代实现(?<=src="")匹配逻辑
VBA正则正向后行断言适配方案
VBA 内置的正则引擎基于 VBScript 实现,本身不支持正向后行断言语法,你需要的(?<=src="")匹配规则可以通过捕获组方案实现等价效果,无需改动原正则的其他匹配逻辑。
改写后的正则规则
将正向后行部分直接纳入匹配范围,把需要提取的目标内容放入第一个捕获组即可,改写后完整正则为:src=""([\w-.]+)(?=/)?
VBA 调用示例
你可以通过如下代码实现匹配提取:
Function ExtractSrcValue(inputStr As String) As String Dim regEx As Object ' 后期绑定正则对象,无需提前引用库 Set regEx = CreateObject("VBScript.RegExp") ' VBA 字符串中双引号需要用两个双引号转义,所以对应规则写为四个双引号 regEx.Pattern = "src=""""([\w-.]+)(?=/)?""" regEx.IgnoreCase = True ' 根据需求调整是否忽略大小写 regEx.Global = False ' 仅匹配第一个结果,需全局匹配可改为 True If regEx.Test(inputStr) Then ' 直接提取第一个捕获组的内容,和原正向后行断言的输出结果完全一致 ExtractSrcValue = regEx.Execute(inputStr)(0).SubMatches(0) End If End Function
效果验证
假设输入测试文本为 <img src=""demo.png/"" alt=""test"">,调用 ExtractSrcValue 函数得到的返回值为 demo.png,和原正则使用正向后行断言的匹配结果完全一致。
内容的提问来源于stack exchange,提问作者Enes ALTUN
相关产品推荐
相关产品推荐

