Классический ASP - Regex - шаблон не заменяется пустой строкой - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь заменить содержимое пустым, используя это регулярное выражение.

objRegExp.Pattern = "<(?>/?)(?!(p|strong)(>|\s))[^<]+?>"
sHtml = objRegExp.Replace(sHtml, "")

Если я проверю это <(?>/?)(?!(p|strong)(>|\s))[^<]+?> регулярное выражение на gskinner , оно работает нормально Но когда я помещаю это на страницу Classic ASP, это не работает.

При отладке ошибка отображается как

Синтаксическая ошибка в регулярном выражении

ВХОД:

<h2>Regex testing</h2><br/><p>P Test</p><div>Div Test</div><strong>Strong Test</strong>

ОЖИДАЕМЫЙ ВЫХОД:

Regex testing<p>P Test</p>Div Test<strong>Strong Test</strong>

Пожалуйста, предложите, что здесь не так?

1 Ответ

1 голос
/ 01 марта 2012

VBScript не поддерживает атомарные группы (конструкция (?>/?) в начале).

См. здесь обзор возможностей на регулярном-выражении.info . VBScript использует аромат ECMA.

Удалите атомную группу и замените проверку на начальный слеш

objRegExp.Pattern = "<(?!/?(p|strong))[^<]+?>"

Это похоже на работу. Смотрите это здесь, на Regexr

Обновление

ОК, я удалил слишком много, если вы положите обратно (>|\s) его работает

<(?!/?(p|strong)(>|\s))[^<]+?>

RegExr

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