Regex, как заменить фразы / слова не в ссылках? - PullRequest
0 голосов
/ 15 сентября 2011

Я обновляю некоторый код, написанный на Visual Basic. Регулярное выражение не работает, как я ожидал.

В основном, регулярное выражение применяется в цикле, оно заменяет ключевые слова ссылочными ссылками. Таким образом, он создает строку, которая может содержать множество фраз / слов, замененных ссылками на эти фразы / слова.

Проблема в том, что если у меня есть две фразы вики и википедии. Сначала он будет делать Википедию, так как я приказал запросу составить список фраз по длине. Однако, регулярное выражение заменит википедию, а затем вики независимо от того, преобразуется ли википедия в ссылку.

Итак, я получаю ссылку внутри ссылки.

Вот код.

do 
oRegExp.Pattern = "(" & title & ")(?![^<]*>|[^<]*</a>)"
title = " <a href=""view.asp?id=" guid & """>" & "$&" & "</a> "
content = oRegExp.Replace(content, title)
loop

1 Ответ

0 голосов
/ 15 сентября 2011

Добавление части моего комментария в качестве ответа, поскольку оно, похоже, решило его за вас.

Вы можете попробовать добавить окружение \b вокруг заголовка, например "(\b" & title & "\b).

При этом вам не нужно выполнять замену в каком-либо определенном порядке, если вы заменяете отдельные слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...