1

我编写了以下代码行:

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+]+)*\)*\] -->'但是我仍然遇到同样的错误。

4

1 回答 1

1

我已经更新了我的答案,以满足所提供的新信息。

鉴于您尝试捕获的原始正则表达式不匹配的示例。

以下将匹配 [( 到组件之间的任何字符以及 () 到类之间的任何字符。

\w 匹配单词、数字或下划线。这将使它丢失您的 [-,] 字符

希望这会有所帮助。

<!-- @\[(?<component>[\w]*)\((?<classes>.*?)\)*\] -->

@[组件(类 - 警告,高级)]

于 2018-11-06T11:55:41.733 回答