繁体   English   中英

正则表达式。分割为“()”和“?”

[英]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\\?]这将拆分为:

  1. 空间
  2. ?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM