Я пытаюсь написать регулярное выражение javascript, соответствующее только комментариям стиля NASM в HTML. Например, сопоставление "; interrupt"
для "INT 21h ; interrupt"
.регулярное выражение javascript с несколькими круглыми скобками
Возможно, вы знаете, что /;.*/
не может быть ответом, поскольку перед комментарием может быть объект HTML; Я думал, что /(?:[^&]|&.+;)*(;.*)$/
должны работать для этого, но я обнаружил, что есть две проблемы:
" ; hello world".match(/(?:[^&]|&.+;)*(;.*)$/)
является массивом[" ; hello world", "; hello world"]
. Я не хочу массив." ; hello world; a message".match(/(?:[^&]|&.+;)*(;.*)$/)
является[" ; hello world; a message", "; a message"]
; еще хуже второй элемент.
Вопрос:
- Почему
(?:)
блок возвращается? - Почему
"; a message"
, а не"; hello world; a message"
? - Какое правильное регулярное выражение я могу использовать?
Спасибо! После изменения вашего примера на '(?: [^ &;] * (?: &[^\s;] +; [^ &;] *) *) (;. *) $' Для ухода за объектами типа '& # xAC01;', I решил использовать '(?: [^ &;] | &[^; \ s] +;) * (;. *) $'. –