Как сопоставить символ «<», за которым не следует («a» или «em» или «strong»)? - PullRequest
18 голосов
/ 25 апреля 2010

Как сделать регулярное выражение для соответствия символу <, за которым не следует (a или em или strong)

Так что <hello и <string будут соответствовать, но <strong не будет.

Ответы [ 4 ]

38 голосов
/ 25 апреля 2010

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

<(?!a|em|strong)
8 голосов
/ 25 апреля 2010

Вы используете отрицательный прогноз , простейшая форма которого (для этой проблемы):

<(?!a|em|strong)

Единственная проблема в том, что он будет игнорировать <applet>. Чтобы справиться с этим, используйте \b, которое является выражением нулевой ширины (то есть оно не захватывает ни одного из входных данных), которое соответствует переходу из слова в слово, а не из слова в слово. Символы слова [0-9a-zA-Z_]. Итак:

<(?!(a|em|strong)\b)
2 голосов
/ 03 декабря 2014

Хотя ответ Эндрю явно выше, раньше я также заставил его работать с [^(?:a|em|strong)].

2 голосов
/ 25 апреля 2010

Если ваш движок регулярных выражений поддерживает это, используйте отрицательное прогнозное предположение: это просматривает строку вперед и завершается успешно, если не совпадает; тем не менее, он не потребляет никакой информации. Таким образом, вы хотите, чтобы /<(?!(?:a|em|strong)\b)/: соответствовало <, а затем успешно, если нет a, em или strong, за которым следует разрыв слова, \b.

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