C# 分隔符的正则表达式,数字除外

C# 分隔符的正则表达式,数字除外,c#,regex,C#,Regex,使用C#的Regex.Split,我有一个Regex,它可以在单词之间找到分隔符: [\b\s\p{P}]+ 在“示例文本。另一个:word”上,它工作并生成:示例文本另一个word。太好了 在“word 120000另一个单词”上,它生成:word120000另一个word。不太好 如何更改正则表达式以使数字中的逗号不匹配?i、 因此,120000不会中断?我相信您会发现,使用Regex.Split执行此操作只会随着附加需求的出现而变得更加复杂。您可能会发现最好使用Regex.Match来做

使用C#的Regex.Split,我有一个Regex,它可以在单词之间找到分隔符:

[\b\s\p{P}]+
在“示例文本。另一个:word”上,它工作并生成:示例文本另一个word。太好了
在“word 120000另一个单词”上,它生成:word120000另一个word。不太好


如何更改正则表达式以使数字中的逗号不匹配?i、 因此,120000不会中断?

我相信您会发现,使用
Regex.Split
执行此操作只会随着附加需求的出现而变得更加复杂。您可能会发现最好使用
Regex.Match
来做相反的事情(识别“整个单词”而不是逻辑上的“单词边界”)

原因如下:

((?<=\p{L})\p{P}(?=\p{L}))|(\p{Z}|(?<=[\p{Z}\p{P}])\p{P}|\p{P}(?=[\p{Z}\p{P}]))+
((?试试这个:

(([\s\p{P}](?!\d))|((?<!\d)[\s\p{P}]))+

匹配任何不跟数字的分隔符和第二个-任何不跟数字的分隔符。

你能标记并提及语言吗?对不起-我用的是C#。请看编辑的问题。顺便说一句,字符类中的
\b
不起作用。谢谢-它起作用,你的想法可能是对的…但是,相反的是不是j那么复杂吗?因为“如果在数字之间”逻辑仍然存在…@seldary:取决于你的要求。我的直觉说,用另一种方式更好,但YMMV。@seldary:现在可以了,但让我告诉你它越来越难看。我不能提供一个更好的例子来说明为什么不这样做。我完全同意-你能给我一个更优雅的方法吗?
 ([\s\p{P}](?!\d))