myString= "First?Second Third";
String[] result = Regex.Split(myString, @"( )\?");
应该结果:第一,第二,第三
我错过了什么?(我还需要括号来分割别的东西)
我猜( )
你的意思是空格。您在那里不需要任何捕获组。只需使用更改或字符类:
String[] result = Regex.Split(myString, @"\s|\?");
// OR
String[] result = Regex.Split(myString, @"[\s?]");
使用字符串方法:
myString= "First?Second Third";
String[] result = myString.Split(' ','?');
我不太确定你想用引号做什么。请记住,在 C# 中,括号用于表示正则表达式中的逻辑组,它们不会转义空格。相反,您希望在一组明确的字符上进行拆分,用括号 [] 表示。您应该使用以下模式进行拆分:
String[] result = Regex.Split(myString, @"[\?\s]");
注意 \?是一个转义空间(就像您在原始空间中所做的那样)。空白字符转义为 \s。因此,我的解决方案本质上是说将字符串与任何明确指示的字符分开(基于 [])并将这些字符列为?(转义为 \?)和“”(转义为 \s)。
来自 OP 的更多信息后编辑:在回答此帖子后,我还看到您编辑了顶部评论,说您想要对空白进行逻辑分组,在这种情况下,我会选择:
String[] result = Regex.Split(myString, @"[\?(\s)]");
您需要将这些字符包围在里面[]
以创建它们的范围。 [\s\?]
这将分为:
?
您可以使用\s
处理“任何”空白字符。