2012-06-12 142 views
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"

+0

你试过吗? '\ [[a-zA-Z1-9] * \]' –

回答

5

要使用正则表达式是:

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

方括号是特殊字符(指定一个字符组),所以他们必须要用反斜杠逃脱。在方括号内,除了方括号外,还需要任何字符序列。有几种方法可以解决这个问题。一种是指定[^\]]*(明确指定“不是方括号”)。另一方面,正如我在答复中所使用的,是通过在它后面附加问号来指定匹配不是贪婪。这告诉正则表达式处理器不要贪婪地消耗尽可能多的字符,而是在下一个表达式匹配时立即停止。

+0

而且,如果您只是想删除该文本,则可以使用Regex.Replace(s,“\\\ [。*?\\\]” ,String.Empty); – JDB

1

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

0

另一种方式来写它的括号:

Regex.Split(str, @"\[[^]]*\]"); 
相关问题