Regex 正则表达式模式选择正确的子字符串,但在运行宏vba时抛出错误

Regex 正则表达式模式选择正确的子字符串,但在运行宏vba时抛出错误,regex,vba,regex-lookarounds,regexp-replace,Regex,Vba,Regex Lookarounds,Regexp Replace,我试图删除两个字符串中带有正则表达式的逗号,前面带有[(一个开括号)和?(一个问号)之后的所有内容 我的意见如下: 让我们一起结束他们的战争:在海湾地区的退伍军人中推广健康文化-您对与[Field-2]的关系有多重视? 及 让我们一起结束他们的战争:促进海湾地区退伍军人的健康文化-在临床学者计划期间,与[Field-2]合作,您是否与团队的邪恶问题影响项目以外的新项目合作? 因此,我想删除第一个字符串中的?,并删除第二个字符串中的以下内容 ,您是否与团队的恶劣问题影响项目以外的新项目合作? 我想

我试图删除两个字符串中带有正则表达式的逗号
前面带有
[
(一个开括号)和
(一个问号)之后的所有内容

我的意见如下:

让我们一起结束他们的战争:在海湾地区的退伍军人中推广健康文化-您对与[Field-2]的关系有多重视?

让我们一起结束他们的战争:促进海湾地区退伍军人的健康文化-在临床学者计划期间,与[Field-2]合作,您是否与团队的邪恶问题影响项目以外的新项目合作?

因此,我想删除第一个字符串中的
,并删除第二个字符串中的以下内容

,您是否与团队的恶劣问题影响项目以外的新项目合作?

我想和你在一起

让我们一起结束他们的战争:在海湾地区的退伍军人中促进健康文化-您对与[Field-2]的关系有多重视

让我们一起结束他们的战争:促进海湾地区退伍军人的健康文化-在临床学者计划期间,与[Field-2]

我有
(?我认为vba不支持lookback,但是如果问号出现在匹配逗号和方括号之间的部分之后,则可以使用捕获组,而无需进行替换
|

当使用替换时,问号将与字符串中的任何位置匹配

您可以使用捕获组和
[^

在替换使用组1中,
$1

(,[^\]\[,]*\[[^\]\[]*])[^?]*\?
  • Capturegroup 1
    • 匹配逗号
    • [^\]\[,]*
      匹配除逗号或
      [
      ]
    • \[^\]\[]*]
      匹配自
      […]
  • 关闭第1组
  • [^?]*
    匹配除问号以外的任何字符的0+倍
  • \?
    匹配问号

或具有可选捕获组的较短版本:

(\])(?:,\s*[^,]+)?\?

检查后,可能当前的VBA regex库5.5不支持代码中的回调功能,因为我进行测试时会发出警告

?<=]

谢谢,我不知道VBA不支持
lookback
?<=]
(^]),\s*([^,])+|\?