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

Posted

技术标签:

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

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

([^]+)

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

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

我收到了这个错误:

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

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

【问题讨论】:

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

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

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

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

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

【讨论】:

【参考方案2】:

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

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

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

Demo.

【讨论】:

以上是关于正则表达式(C#)中未终止的[]集[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Django 使用查询集和正则表达式查找重复项

使用正则表达式修复 Java 中未转义的 XML 实体?

C#-正则表达式

正则表达式:在C#中匹配引号[重复]

正则表达式中的未终止组

按正则表达式终止进程