1
myString= "First?Second Third";    
String[] result = Regex.Split(myString, @"( )\?");

应该结果:第一,第二,第三

我错过了什么?(我还需要括号来分割别的东西)

4

4 回答 4

5

我猜( )你的意思是空格。您在那里不需要任何捕获组。只需使用更改或字符类:

String[] result = Regex.Split(myString, @"\s|\?");

// OR
String[] result = Regex.Split(myString, @"[\s?]");
于 2013-09-27T17:53:26.677 回答
3

使用字符串方法:

myString= "First?Second Third";
String[] result = myString.Split(' ','?');
于 2013-09-27T17:56:44.820 回答
1

我不太确定你想用引号做什么。请记住,在 C# 中,括号用于表示正则表达式中的逻辑组,它们不会转义空格。相反,您希望在一组明确的字符上进行拆分,用括号 [] 表示。您应该使用以下模式进行拆分:

String[] result = Regex.Split(myString, @"[\?\s]");

注意 \?是一个转义空间(就像您在原始空间中所做的那样)。空白字符转义为 \s。因此,我的解决方案本质上是说将字符串与任何明确指示的字符分开(基于 [])并将这些字符列为?(转义为 \?)和“”(转义为 \s)。

来自 OP 的更多信息后编辑:在回答此帖子后,我还看到您编辑了顶部评论,说您想要对空白进行逻辑分组,在这种情况下,我会选择:

String[] result = Regex.Split(myString, @"[\?(\s)]");
于 2013-09-27T18:00:02.130 回答
0

您需要将这些字符包围在里面[]以创建它们的范围。 [\s\?] 这将分为:

  1. 空间
  2. ?

您可以使用\s处理“任何”空白字符。

于 2013-09-27T17:53:51.660 回答