在两个字符串之间选择文本,但自定义转义字符除外

时间:2018-07-26 14:43:02

标签: javascript regex

我正在尝试使用正则表达式来选择所有用{{}}包围的字符串,但是忽略是否用[{{}}]包装。这是我想出的:/(?!\[){{(.*?)}}(?!])/gm

我的问题是,在某些情况下,可能有三个而不是两个大括号,而我的解决方案仅适用于两个大括号。

预期结果如下:

foo{{baz}}bar => {{baz}}

foo[{{baz}}]bar =>没什么

foo{{{baz}}}bar => {{{baz}}}

foo[{{{baz}}}]bar =>没什么

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式对这个问题使用替代:

\[{?{{.*?}}}?\]|({?{{.*?}}}?)
  • \[{?{{.*?}}}?\]您不感兴趣的内容。已匹配但未被捕获。
  • ({?{{.*?}}}?)您感兴趣的内容。已匹配并捕获。

结果被捕获在捕获组中。您可以尝试使用正则表达式here


或者,您可以将原始正则表达式修改为:

(?!\[{?){{(.*?)}}}?(?!}?])

原始表达存在的问题是缺少可选的第三个}括号。

您可以尝试使用此正则表达式here