Регулярное выражение, которое игнорирует сущности HTML - PullRequest
1 голос
/ 09 февраля 2010

Мне нужно регулярное выражение в JavaScript, которое делает следующее.

Те экземпляры a , которые не являются частью сущности HTML, должны быть заменены на w .

Пример:

abc should change to wbc

aabacaa should change to wwbwcww

&abcaa& should change to &wbcww&  

и т. Д.

Я использую JavaScript.

Любая помощь приветствуется.

Ответы [ 3 ]

6 голосов
/ 09 февраля 2010

Попробуйте это:

"&abcaa&".replace(/&[^;]+;|a/g, function($0) {
    return $0 === "a" ? "w" : $0;
})
0 голосов
/ 09 февраля 2010

В качестве более общего ответа, при написании регулярных выражений, первое, что я делаю, это захожу на http://rubular.com и выкладываю пару тестовых строк. Затем я пишу и переделываю регулярное выражение, пока оно не сделает то, что мне нужно.

Да, я знаю, что Rubular - это сайт регулярных выражений Ruby, но синтаксис RegExp очень похож, если не идентичен для большинства языков (я думаю, что Perl использует расширенный синтаксис). Я успешно использовал Rubular для тестирования Java RegExps.

0 голосов
/ 09 февраля 2010

без регулярных выражений, на вашем любимом языке программирования разбейте вашу строку на «& a» (или &), замените разделенные элементы, затем присоединитесь, например, в Python

>>> s="&abcaa&"
>>> '&a'.join( [ i.replace("a","w") for i in  s.split("&a") ] )
'&wbcww&'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...