我正在尝试使用Outlook 2013 VBA来修改电子邮件正文,方法是拉出并替换<跨度>部分。但是,在多个跨度的情况下,我很难强制正则表达式只能获得一个跨度。
基于其他一些搜索,我正在尝试使用否定前瞻,但却失败了。
以下结果为:<span><span style = blah blah>Tags: test, test2</span>
期望的结果是:<span style = blah blah>Tags: test, test2</span>
测试模块代码:
Sub regextest()
Dim regex As New RegExp
Dim testStr As String
testStr = "a<span><span style=blah blah>Tags: test, test2</span></span>"
regex.pattern = "<span.*?(?:(span)).*?Tags:.*?</span>"
Set matches = regex.Execute(testStr)
For Each x In matches
Debug.Print x 'Result: <span><span style = blah blah>Tags: test, test2</span>
Next
End Sub
谢谢!
答案 0 :(得分:1)
Wiktor在上述评论中的回答可以用于我的目的:
<span\b[^<]*>[^<]*Tags:[^<]*</span>
只要没有&#39;&lt;&#39;在两个跨度结束之间。这不是一个先行,但它对我正在做的事情已经足够好了,非常简单。
感谢Wiktor!