В любом случае, я полагаю, вы тоже не хотите пустоты. Если это так, то
\S\s*<
Ответ 4
Это даст вам "<" после первого экземпляра:
[^<]<
Ответ 5
Попробуйте следующее:
(?<="[^"]*)<(?=[^"]*")
Ответ 6
Метод @duncan работает нормально, если вы просто хотите его заменить, но не соответствует <.
и все lookbehind не будут работать, если вы используете javascript. потому что javascript не поддерживает lookbehind, если вы не включите флаг --harmony в nodejs или экспериментальные функции javascript в chrome.
Но здесь будет работать lookahead, а именно:
/(?!^)</
будет соответствовать <, который не находится в начале строки.
и замена будет:
'<list message="2 < 3">'.replace(/(?!^)</, '<')