myString= "First?Second Third";
String[] result = Regex.Split(myString, @"( )\?");
应该结果: 第一, 第二, 第三
我错过了什么? (我还需要括号来分开其他东西)
答案 0 :(得分:5)
我猜( )
,你的意思是空白。你不需要任何捕获组。只需使用更改或字符类:
String[] result = Regex.Split(myString, @"\s|\?");
// OR
String[] result = Regex.Split(myString, @"[\s?]");
答案 1 :(得分:3)
使用字符串方法:
myString= "First?Second Third";
String[] result = myString.Split(' ','?');
答案 2 :(得分:1)
我不太确定你要用引号做什么。请记住,在C#括号中用于表示正则表达式中的逻辑组,它们不会转义空格。而是想要拆分一组明确的字符,用括号[]表示。您应该使用以下模式进行拆分:
String[] result = Regex.Split(myString, @"[\?\s]");
注意\?是一个逃脱的空间(正如你原来的那样)。空格字符转义为\ s。因此,我的解决方案实际上是说在任何明确指出的字符(基于[])上分隔字符串并将这些字符列为? (转义为\?)和“”(转义为\ s)。
从OP获得更多信息后编辑: 在回答了这篇文章后,我还看到你编辑了最高评论,说你想要一个白色空间的逻辑分组,在这种情况下我会选择:
String[] result = Regex.Split(myString, @"[\?(\s)]");
答案 3 :(得分:0)
您需要在[]
内包围这些字符以创建一系列字符。 [\s\?]
这将分开:
?
您可以使用\s
来处理“任何”空白字符。