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\") />
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...