我不知道为什么这仅适用于找到的最后一个实例,而不是我所期望的所有实例。任何帮助表示赞赏。
输入字符串:
<a href="http://www.scirra.com" target="_blank" rel="nofollow">http://www.scirra.com</a><br /><br />
<a href="http://www.scirra.com" target="_blank" rel="nofollow">http://www.scirra.com</a><br /><hr>
Regex:
'SEO scirra links
Dim regEx
Set regEx = New RegExp
' BB code urls
With regEx
.Pattern = "<a href=\""http://www.scirra.com([^\]]+)\"" target=\""_blank\"" rel=\""nofollow\"">"
.IgnoreCase = True
.Global = True
.MultiLine = True
End With
strMessage = regEx.Replace(strMessage, "<a href=""http://www.scirra.com$1"" target=""_blank"" title=""Some value insert here"">")
set regEx = nothing
Output:
<a href="http://www.scirra.com" target="_blank" rel="nofollow">http://www.scirra.com</a><br /><br />
<a href="http://www.scirra.com" target="_blank" title="Some value insert here">http://www.scirra.com</a><br /><hr>
任何人都可以阐明为什么它只将标题添加到最后找到的实例吗? (我测试过更多,总是只适用于最后一个)
这是因为你的正则表达式中是这样的:
...a.com-->([^\]]+)<--
你尝试匹配所有不是的东西]
,一次或多次,在您的输入中。并且由于没有]
在您的输入中,它会吞噬所有内容(是的,甚至是换行符),但必须回溯以满足您的正则表达式的其余部分,这意味着它会回溯到last的发生" target="_blank" ....
.
如果您想更换rel="nofollow"
并允许后面的任何路径http://www.scirra.com
,您可以改用这个正则表达式:
(<a href="http://www\.scirra\.com((/[^/"]+)*/?)" target="_blank" )rel="nofollow">
并将其替换为:
$1title="Some value insert here">
复制/粘贴您当前的代码:
Dim regEx
Set regEx = New RegExp
' BB code urls
With regEx
.Pattern = "(<a href=""http://www\.scirra\.com((/[^""/]+)*/?)"" target=\""_blank\"" )rel=\""nofollow\"">"
.IgnoreCase = True
.Global = True
.MultiLine = True
End With
strMessage = regEx.Replace(strMessage, "$1title=""Some value insert here"">")
但请注意,这对于替换的 URL 来说是相当严格的。例如,目标内容是否有可能是其他内容,或者有更多属性?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)