REGEX只识别纯文本

| 我正在VBA中工作,并且有一个正则表达式来标识模式ASA1234ss。 我将收件箱中的某些项目模式转换为url。
Body=objItem.HTMLBody
With RegX
        .Pattern = \"ASA[0-9][0-9][0-9][0-9][a-z][a-z]\"
        .Global = True
        .IgnoreCase = Not MatchCase
End With
        \'Replacing the pattern with a hyperlink
Body = RegX.Replace(Body, \"<a href=\'http://www.stack.com=$&\'>$&</a>\")
objItem.HTMLBody = Body
这在仅替换一次模式中效果很好。但是,当我再次执行宏时,超链接的模式再次被替换为相同的文本。 例如: 样本输入
ASA8765jd
ASA7765jh
ASA8873hi
第一次执行
<a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a>
<a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a>
<a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a>
第二次执行
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a>\'><a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a></a>
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a>\'><a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a></a>
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a>\'><a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a></a>
第三次执行
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a>\'><a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a></a>\'><a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a>\'><a href=\'http://www.stack.com=ASA8765jd\'>ASA8765jd</a></a></a>
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a>\'><a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a></a>\'><a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a>\'><a href=\'http://www.stack.com=ASA7765jh\'>ASA7765jh</a></a></a>
<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a>\'><a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a></a>\'><a href=\'http://www.stack.com=<a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a>\'><a href=\'http://www.stack.com=ASA8873hi\'>ASA8873hi</a></a></a>
    
已邀请:
        为什么要多次运行它?
Global = True
表示它将在一次
Replace
调用中替换每次出现的正则表达式。     
        尝试一些解决方法:
(?<!http://www.stack.com=)ASA\\d{4}[a-z]{2}(?!</a>)
(我随意将
[0-9]
缩短为
\\d
,并使用
{}
量词。) 这将确保该字符串不会紧随链接,也不会紧随其后的是超链接close标记。在这里查看实际操作。 如果不想匹配单词的中间位置,可以在表达式的前后添加
\\b
,例如
xxASA8765jdxx
。     
        使用
^
要求模式在行的开头:
.Pattern = \"^ASA[0-9][0-9][0-9][0-9][a-z][a-z]\"
    
        尝试在正则表达式中添加单词边界标志:
.Pattern = \"\\bASA[0-9][0-9][0-9][0-9][a-z][a-z]\\b\"
    

要回复问题请先登录注册