REGEX для связи терминов в отображаемом тексте - PullRequest
0 голосов
/ 07 июня 2011

У меня есть унаследованное приложение, которое динамически создает ссылки HREF в отображаемом тексте.Казалось, что все работало хорошо, пока мы недавно не внесли изменения в базу данных, и наш список терминов для ссылки не начал возвращаться из запроса в другом порядке.Это выявило ошибку в существующем REGEX, когда он пытается поместить ссылку HREF в ранее существовавшую HREF.Просто навязать новый порядок в списке условий не вариант.Термин может быть только одним словом, может быть несколькими словами и даже может быть словами, отформатированными с использованием HTML.

Что мне нужно настроить в REGEX, чтобы он игнорировал термины в атрибуте HREF элемента A?Вот пример того, что я имею в виду:

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

1 Ответ

2 голосов
/ 07 июня 2011

Измените первое (\ W) в регулярном выражении на ([^ = \ w>]), а второе на ([^ = \ w <]) </p>

<cfset Output = REReplaceNoCase(Variables.Output, "(?![</]#w#>)([^=\w>])(#w#)([^=\w<])", "\1<a href=""Display.cfm?Term=#urlencodedformat(w)#"">\2</a>\3", "one") />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...