首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Regex.Split()中的Regex排除

C# Regex.Split()中的Regex排除
EN

Stack Overflow用户
提问于 2015-07-26 14:51:48
回答 2查看 475关注 0票数 1

我正在用C#为C#编写一个正则表达式。总体目标是解析一个文件,其中我不知道分隔符,但我知道关键字。每一个不是关键词的单词都是一个项目。我无法知道如何划分这些区域。到目前为止我使用的是:

代码语言:javascript
运行
复制
 String[] list = Regex.Split(line, @"\W+");

这是很好的工作,除了一个小的警告,其中一个项目是一个连字符的词。有没有办法不让"-“字被捡起来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-26 14:56:08

使用一个否定的字符类。

代码语言:javascript
运行
复制
String[] list = Regex.Split(line, @"[^-\w]+");

[^-\w]+否定字符类,它匹配任何字符,但不匹配一个单词、字符或连字符(一次或多次)。

代码语言:javascript
运行
复制
String[] list = Regex.Split(line, @"(?:(?!-)\W)+");
票数 5
EN

Stack Overflow用户

发布于 2015-07-26 15:26:11

下面是一个使用.NET regex字符类减法的解决方案:

代码语言:javascript
运行
复制
String[] list = Regex.Split(line, @"[\W-[-]]+");

\W被放入一个字符类中,然后我们使用一个减号,并使用另一个平方括号子集告诉regex引擎排除内部的一些元素。

请参阅演示

如果需要,可以向嵌套字符类中添加更多异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31638361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档