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*([^,])+|\?