2009-12-11 130 views
0

我一直在使用正则表达式匹配嵌入在方括号中的字符串[*]为:正则表达式字符串用空格和特殊字符 - C#

new Regex(@"\[(?<name>\S+)\]", RegexOptions.IgnoreCase); 

我还需要搭配一些代码看起来像: [ TestTable的:A,B,C,d]

它已得到空格,逗号,冒号

能否请您指导我如何修改我的上述正则表达式包含这样的代码。
P.S.其他代码没有空格/特殊字符,但总是用[...]括起来。

+0

它有助于如果你用适当的编程语言标记你的问题 – lorenzog 2009-12-11 11:48:06

+0

它的c#。 ................. – Robert 2009-12-11 11:49:41

回答

1
Regex myregex = new Regex(@"\[([^\]]*)]") 

将匹配所有不包括括号的字符,并括在括号中。捕获组\1将匹配括号内的内容。

解释(的RegexBuddy提供):

Match the character “[” literally «\[» 
Match the regular expression below and capture its match into backreference number 1 «([^\]]*)» 
    Match any character that is NOT a ] character «[^\]]*» 
     Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*» 
Match the character “]” literally «]» 

这也会,如果你有一个以上的对你要找的字符串匹配括号的工作。它将而不是工作,如果方括号可以嵌套,例如, G。 [Blah [Blah] Blah]

0
/\[([^\]:])*(?::([^\]]*))?\]/ 

捕获组1将包含整个标签,如果它不具有结肠,或者如果它在冒号之前的部分。

捕获组2将包含冒号后的部分。然后,您可以拆分','并修剪每个条目以获取单个零件。

相关问题