让我们有示例字符串:
"Hello @{MATCH 1} My @[MATCH 2] Wonderful #{MATCH 3} World"
假设注册了以下正则表达式:
[/@\{.+\}/, /@\[.+\]/, /#\{.+\}/]
我需要的是正则表达式返回以下匹配项:
["Hello ", "@{MATCH 1}", " My ", "@[MATCH 2]", " Wonderful ", "#{MATCH 3}", " World"]
目前我所做的是通过将注册的正则表达式与 '|' 加入来编译它们 并加入 '.+?' 最后的图案。它会变成这样的东西:
/@\{.+\}|@\[.+\]|#\{.+\}|.+?/g
但是,这将返回这些匹配项:
["H", "e", "l", "l", ..., "@{MATCH 1}", " ", "M", ..., "@[MATCH 2]", ...]
我可以忍受当前的比赛,只需要对他们进行额外的处理。但是,我担心这样数量的返回匹配对性能的影响。任何人都知道一个更好的正则表达式来返回我想要的匹配项?请注意,模式可以动态注册。谢谢!