[英]Regex.Split on “() ” and “?”
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
处理“任何”空格字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.