使用正则表达式分隔单个单词?
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();
祝你好运!
【讨论】:
以上是关于使用正则表达式分隔单个单词?的主要内容,如果未能解决你的问题,请参考以下文章