如何在C#中使用Regex将短语拆分为单词

Dea*_*ean 7 c# regex

我试图使用正则表达式将句子/短语分成单词.

var phrase = "This isn't a test.";
var words = Regex.Split(phrase, @"\W+").ToList();
Run Code Online (Sandbox Code Playgroud)

单词包含"This","isn","t","a","test"

显然它正在捡起撇号并分裂.我可以改变这种行为吗?它还需要多语言支持各种语言(西班牙语,法语,俄语,韩语等).

我需要将这些单词传递给拼写检查程序.特别是Nhunspell.

return (from word in words let correct = _engine[langId].Spell(word) where !correct select word).ToList();
Run Code Online (Sandbox Code Playgroud)

Fra*_*ome 10

如果你想分成单词用于拼写检查,这是一个很好的解决方案:

new Regex(@"[^\p{L}]*\p{Z}[^\p{L}]*")
Run Code Online (Sandbox Code Playgroud)

基本上你可以使用以前的正则表达式使用Regex.Split.它使用unicode语法,因此它可以在多种语言中工作(但不适用于大多数亚洲语言).并且它不会破坏带有撇号或连字符的单词.