Regex.Split 特定字符

Regex.Split on specific characters

我试图让我的字符串在任何 Non Word Characters (\W) 上拆分,包括 spaces 包括这些字符:._$。我也试图 keep Regex.Split 除了 for spaces

的任何定界符

我该怎么做?我读过很多问题,但没有任何意义。这是我的最新代码:

string[] result = Regex.Split (source, @"(\W[^(.|_|#|$)])");

编辑:

这里有一个例子

      using System.Text;

我想要:

using_System.Text_;

(当前)结果是:

</code> _ <code> _ using _ System.Text _ ; _

(?!\.|#|_|$|\s)(\W)|\s+

尝试 this.A lookahead 将确保它不会被这些字符拆分。

您可以使用以下特定于 .NET 的 [\W-[._$#\s]])|\s+ 正则表达式并利用 C# LINQ 删除空数组项:

var txt = "      using System.Text;";
var splts = Regex.Split(txt, @"([\W-[._$#\s]])|\s+").Where(s => s != String.Empty).ToArray(); 

输出:

正则表达式 - [\W-[._$#\s]])|\s+ - 使用比环视更有效的 character class subtraction,因为它利用了 .NET 正则表达式引擎的所有优化。 [\W-[._$#\s]] 表示 任何非单词字符,不包括 ._$#whitespace.