我正在用C#为C#编写一个正则表达式。总体目标是解析一个文件,其中我不知道分隔符,但我知道关键字。每一个不是关键词的单词都是一个项目。我无法知道如何划分这些区域。到目前为止我使用的是:
String[] list = Regex.Split(line, @"\W+");
这是很好的工作,除了一个小的警告,其中一个项目是一个连字符的词。有没有办法不让"-“字被捡起来?
发布于 2015-07-26 14:56:08
使用一个否定的字符类。
String[] list = Regex.Split(line, @"[^-\w]+");
[^-\w]+
否定字符类,它匹配任何字符,但不匹配一个单词、字符或连字符(一次或多次)。
或
String[] list = Regex.Split(line, @"(?:(?!-)\W)+");
发布于 2015-07-26 15:26:11
下面是一个使用.NET regex字符类减法的解决方案:
String[] list = Regex.Split(line, @"[\W-[-]]+");
\W
被放入一个字符类中,然后我们使用一个减号,并使用另一个平方括号子集告诉regex引擎排除内部的一些元素。
请参阅演示
如果需要,可以向嵌套字符类中添加更多异常。
https://stackoverflow.com/questions/31638361
复制相似问题