REGEX只识别纯文本

REGEX只识别纯文本,regex,vba,Regex,Vba,我在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 hyp

我在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
第一次执行

<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>

第二次执行

<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>
”>
'>
'>
第三次执行

<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
调用中替换正则表达式中的每一次出现。

尝试向正则表达式添加单词边界标志:

.Pattern=“\bASA[0-9][0-9][0-9][0-9][a-z][a-z]\b”
试试:

(?)
(我冒昧地将
[0-9]
缩短为
\d
,并使用
{}
量词。)

这将确保字符串不会紧跟在链接之后,也不会紧跟在超链接关闭标记之后。看到它在行动


如果不想匹配单词的中间位置,可以在表达式前后添加
\b
,例如在
xxASA8765jdxx
中使用
^
要求模式位于行首:

.Pattern = "^ASA[0-9][0-9][0-9][0-9][a-z][a-z]"

是的,它可以在一次单击中替换所有内容。但是,如果我把它改为False,它只会替换主体中的第一个模式,并且在尝试执行多次执行时仍然存在相同的问题。好的。。。那么,如果你试图模仿
Global=True
的话,为什么要把它改为false呢?你的答案不是真实的答案,只是要求澄清而已!你真的觉得无聊吗?你正在死掉3年前的帖子。。那?好吧,我知道为什么失败了。你的对手将出现在什么背景下?如果它总是单独存在,你可以指定由空格包围的模式。我也尝试过这个…这不起作用。它仍然会替换整个超链接,因为你没有给我们提供正确的示例。。。你到底在尝试什么?为什么你要尝试多次处决?在这里回答的每个人似乎都遗漏了一些东西。这根本不能解释为什么你要执行多次处决。此外,请编辑链接,使其不会显示为实际链接。在每一行前放置4个空格。我试图改进问题的格式,使其显示实际的HTML(而不是蓝色超链接文本),但要弄清楚并编写第二次和第三次执行结果应该是什么样子,工作量太大了@用户803800,请自己动手。@Jean-François Corbett-我也这么认为,直到我意识到我可以打开我最喜欢的正则表达式工具,运行原来的替换程序三次。=]天哪,它成倍增长!!