此问题在此处已有答案:
Using regex with positive lookbehind in VBA(1个答案)
昨天关门了。
我需要匹配一个txt文件中的所有:
,但避免它们前面有https
、http
或\
,但VBA不支持正则表达式的lookbehind。
使用负向后查找,它应该是(?<!http)(?<!https)(?<!\\)\:
。
对于某些不支持lookbehind的引擎,它可以是([^https*][^\\])\K\:
。
这两个正则表达式在VBA中都不起作用,第一个正则表达式给我一个错误(5017),第二个正则表达式忽略所有:
,但代码没有抛出任何错误。
基于regEx positive lookbehind in VBA language,我在一个小例子中测试了这一点:
myString = "BA"
pattern = "[^B](A)"
myString = rg.Replace(myString,"$1")
预期的结果是"A"
,但得到的结果是"BA"
。我错过了什么?
解决方案在这篇文章:Using regex with positive lookbehind in VBA它没有出现在我的搜索中,因为标题说的是积极的回顾,而我的问题是关于消极的回顾。
3条答案
按热度按时间0h4hbjxa1#
“诀窍”是匹配你不想要的,但然后捕获你想要的,并只返回捕获的组。例如:
will =〉
A
立即窗口中e0bqpujr2#
您可以使用
http://www1 https://www2 \: : text:...
的输出为http://www1 https://www2 \: _ text_...
。重点是匹配并捕获
https:
、http:
或\:
与(https?:|\\:)
捕获组,然后在匹配时进行内联替换。偏移量的使用有助于跟踪不断变化的字符串长度,特别是当您需要用不同长度的字符串进行替换时。vhmi4jdf3#
罗恩Rosenfeld给出了查找
:
的代码,当:
前面有http
(和其他字符)时,您需要查找:
,当它 * 不是 * 前面有http
(和其他字符)时。