vba正则表达式出错

vba正则表达式匹配 报错“运行时错误 5017”

Sub test()
    Dim regEx, Match, matches ' 建立变量。
    Set regEx = CreateObject("vbscript.regexp") ' 建立正则表达式。

    regEx.Pattern = "(?<![\u4e00-\u9fa5])张三(?![\u4e00-\u9fa5])" ' 报运行时错误 5017
    'regEx.Pattern = "张三"    '不会报错
    regEx.IgnoreCase = True ' 设置是否区分字符大小写。
    regEx.Global = True ' 设置全局可用性。
    
    regEx.MultiLine = True '设置多行匹配
    
    strng = "6. a张三(1) ,我不是 张三丰"  '只匹配第一个张三,不匹配张三丰那个张三
    Set matches = regEx.Execute(strng) ' 执行搜索。
End Sub

我想匹配“张三”这个名字,但是名字之间有空格,标点符号,数字等分割。我写了正则表达式匹配 "(?<![\u4e00-\u9fa5])张三(?![\u4e00-\u9fa5])",这个表达式我在线测试网站https://c.runoob.com/front-end/854/ 可以通过,但是在vba中报错。请问有什么解决办法。

img

VBA正则表达式不支持(?<=...)和(?<!...)
你是要 "张三" 前后不能有别的中文改成这样即可

regEx.Pattern = "\b张三\b"

vba兼容性不好

可以替换此图案的所有引用:

^[^0-9+-]+|([+-])[^0-9]+|([0-9])[^0-9.]+
with

$1$2
请看regex演示。

与VBA正则表达式引擎不支持的lookbehind((?<=...))不同,您可以使用捕获组,并通过对捕获值的反向引用恢复结果中捕获的文本。

斜杠之类的需要转义字符吧。