XRegExp: "Непревзойденный") "Все же все кажется сбалансированным
Я написал следующую строку кода:
XRegExp.exec(data,
XRegExp('<!-- @\[(?<component>[\w+])[\(*(?<classes>[\w+])*\)]*\] -->', 'g'))
Как вы можете видеть, он использует библиотеку XRegExp, поэтому я могу использовать именованные группы и другие функции PCRE.
Я получаю ошибку:
syntaxError: Invalid regular expression: /<!-- @[(?<component>[w+])[(*(?<classes>[w+])*)]*] -->/: Unmatched ')'
Тем не менее, я не понимаю, где непревзойденный )
является. Насколько я могу судить, все скобки, которые нужно экранировать, должны быть, а все те, которые не должны, - нет.
Вот строка, которую я пытаюсь найти:
<!-- @[NoteBlock(warning)] -->
они также должны соответствовать:
<!-- @[NoteBlock(warning, high-level)] -->
<!-- @[NoteBlock] -->
Это не должно совпадать:
<!-- @[(warning, high-level)] -->
UDPATE: с помощью Regex101 мне удалось получить регулярное выражение: я обновил регулярное выражение до '<!-- @\[(?<component>[\w+]+)\(*(?<classes>[\w+]+)*\)*\] -->'
однако я все еще получаю ту же ошибку.
1 ответ
Я обновил свой ответ, чтобы соответствовать новой предоставленной информации.
Учитывая пример того, что вы пытаетесь захватить, оригинальное регулярное выражение не будет соответствовать.
Следующее будет сопоставлять любые символы между [(для компонента и что-либо между () для классов).
\ w соответствует слову, цифре или подчеркиванию. Это бы пропустило ваши [-,] символы
Надеюсь, это поможет.
<!-- @\[(?<component>[\w]*)\((?<classes>.*?)\)*\] -->
@ [Компонент (Классы - предупреждение, высокий уровень)]