【问题标题】:Not terminated set of [] in regex (C#) [duplicate]正则表达式(C#)中未终止的[]集[重复]
【发布时间】:2018-07-14 13:05:46
【问题描述】:

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

{{([^]+)}}

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

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

我收到了这个错误:

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

不管是什么意思... 有人有提示吗?

【问题讨论】:

  • [^] 没有意义。
  • regxr 明白了吧……
  • ^ 表示排除,因此您的组中没有字符。
  • 是的,排除 void 组中的任何元素...即包含所有内容...创建一个接受任何序列的组的方法是什么?
  • 听起来你在找.

标签: c# regex


【解决方案1】:

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

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

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

访问 this link 以尝试工作演示。

【讨论】:

    【解决方案2】:

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

    为了捕获直到结束 }} 的字符串,请将表达式更改为:

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

    Demo.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-27
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多