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

Как бы я сделал регулярное выражение для соответствия символу '<' не сопровождаемый ('a' или 'em' или 'strong')

поэтому <hello и <string будут совпадать, но <strong не будет.

UPDATE: Btw, язык, который я использую, - это javascript

Ответы

Ответ 1

Попробуйте следующее:

<(?!a|em|strong)

Ответ 2

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

<(?!a|em|strong)

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

<(?!(a|em|strong)\b)

Ответ 3

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

Ответ 4

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