使用正则表达式分隔单个单词?

Posted

技术标签:

【中文标题】使用正则表达式分隔单个单词?【英文标题】:Using regex to separate individual words? 【发布时间】:2013-12-13 20:54:04 【问题描述】:

我有以下行将句子拆分为单词并将其存储到基于空格的数组中:string[] s = Regex.Split(input, @"\s+");

问题出在句末,它也接了句号。例如:C# is cool. 代码将存储:

    C# is cool.

问题是:如何才能不接经期?

【问题讨论】:

除了\s之外,您还必须过滤其他字符。 你可以直接使用 string[] s = input.replace(".","").split(" ") 吗? 【参考方案1】:

您可以使用字符类 [] 添加点 . 或其他需要拆分的字符。

string[] s = Regex.Split(input, @"[\s.]+");

Demo

【讨论】:

【参考方案2】:

您可以在正则表达式中添加点(和其他标点符号),如下所示:

string[] s = Regex.Split(input, @"(\s|[.;,])+");

【讨论】:

我不明白你为什么不直接使用[\s.;,]+ @HamZa 没错,那将是相同的。这是我个人偏好将特殊字符类放在方括号之外,因为我认为它更具可读性。不过,我同意这是非常主观的。【参考方案3】:
string[] s = Regex.Split(input, @"[^\w#]+");

您可能需要添加更多字符来设置[^\w#],因此它将根据您的要求为您工作...

【讨论】:

【参考方案4】:

使用非单词字符模式:\W

string[] s = Regex.Split(input, @"\W+");

【讨论】:

这也会在# 上拆分【参考方案5】:

考虑使用 Regex.Matches 作为您的替代方案...

string[] outputMessage = Regex.Matches(inputMessage, @"\w+").Cast<Match>().Select(match => match.Value).ToArray();

祝你好运!

【讨论】:

以上是关于使用正则表达式分隔单个单词?的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式匹配多个逗号分隔的单词

Python 正则表达式将空格分隔的单词分隔成一个列表

使用正则表达式获取用换行符分隔的单词之间的文本

如何使用正则表达式提取骆驼大小写字符串的所有单词?

正则表达式匹配用括号括起来并用管道分隔的所有单词

C# 正则表达式匹配具有分隔符的字符串