如何解决REGEX链接显示文本内的术语
| 我有一个继承的应用程序,可以在显示的文本内动态构建HREF链接。直到我们最近进行了数据库更改,并且链接的术语列表开始以不同的顺序从查询中返回之前,一切似乎都工作良好。这暴露了现有REGEX中的一个错误,该错误试图将HREF链接放置在预先存在的HREF中。仅仅强行在条款列表上进行新的排序是不可行的。一个术语可能只是一个单词,可能是多个单词,甚至可能是使用HTML格式化的单词。 我需要在REGEX中进行哪些调整,以使其忽略A元素的HREF属性中的术语?这是我所指的示例:<cfset Output = \"This is some sample text to show the problem when we have term1 term2.\" />
<cfloop index=\"w\" list=\"sample;term1 term2;term1\" delimiters=\";\">
<cfset Output = \".\" & Variables.Output & \".\" />
<cfset Output = REReplaceNoCase(Variables.Output,\"(?![</]#w#>)(\\W)(#w#)(\\W)\",\"\\1<a href=\"\"Display.cfm?Term=#urlencodedformat(w)#\"\">\\2</a>\\3\",\"one\") />
<cfset Output = Mid(Variables.Output,2,Len(Variables.Output)-2) />
</cfloop>
<cfoutput>#Variables.Output#</cfoutput>
解决方法
将正则表达式中的第一个(\\ W)更改为([^ = \\ w>]),第二个更改为([^ = \\ w <])
<cfset Output = REReplaceNoCase(Variables.Output,\"(?![</]#w#>)([^=\\w>])(#w#)([^=\\w<])\",\"\\1<a href=\"\"Display.cfm?Term=#urlencodedformat(w)#\"\">\\2</a>\\3\",\"one\") />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。