0

在正则表达式方面,我真的是一个 n00b。例如,我一直在尝试拆分字符串[----anything inside-----]

string s = "Hello Word my name_is [right now I'm hungry] Julian";
string[] words = Regex.Split( s, "------");

结果将是 "Hello Word my name_is "" Julian"

4

3 回答 3

5

您要使用的正则表达式是:

Regex.Split( s, "\\[.*?\\]" );

方括号是特殊字符(指定字符组),因此必须使用反斜杠对其进行转义。在方括号内,您需要除右方括号外的任何字符序列。有几种方法可以处理它。一种是指定[^\]]*(明确指定“不是右方括号”)。另一个,正如我在回答中使用的那样,是通过在其后附加一个问号来指定匹配不是贪婪的。这告诉正则表达式处理器不要贪婪地消耗尽可能多的字符,而是在匹配下一个表达式时立即停止。

于 2012-06-12T17:16:05.873 回答
1

@"\[.*?\]"将匹配文本的括号

于 2012-06-12T17:16:21.637 回答
0

另一种写法:

Regex.Split(str, @"\[[^]]*\]");
于 2012-06-12T17:20:52.857 回答