正则表达式 (C#) 中未终止的 [] 集



我正在尝试解析在此模式中查找数据的文本:

{{([^]+)}}

{{}} 之间的任何字符序列。但是,当我尝试构建一个Regex对象时:

Regex _regex = new Regex("{{([^]+)}}", RegexOptions.Compiled);

我收到此错误:

analysis of "{{([^]+)}}" - Set of [] not terminated....

无论这意味着什么...有人有提示吗?

[^...]的目的是否定指定列表中存在的字符类。在^符号之后,为了定义正确的正则表达式,您应该包含一组要排除的字符,例如[^a]+(这匹配一个或多个不包含文字a的字符(。

您尝试定义的正则表达式可能是:

{{s*([w]+)s*}}

访问此链接以尝试工作演示。

这是因为

[^]不是有效的正则表达式,因为您需要指定至少一个要排除的符号。

为了捕获字符串直到结束}}将表达式更改为以下内容:

{{((?:[^}]|}[^}])*)}}

演示。

最新更新