具有空格和特殊字符的字符串的正则表达式 - C#

时间:2009-12-11 11:45:37

标签: c# regex

我一直在使用正则表达式来匹配方括号[*]中嵌入的字符串:

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

我还需要匹配一些看起来像的代码: [TESTTABLE:A,B,C,D]

它有空格,逗号,冒号

您能否指导我如何修改上述正则表达式以包含此类代码 附:其他代码没有空格/特殊字符,但始终包含在[...]中。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

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

如果没有冒号,捕获组1将包含整个标记,如果没有冒号,则包含整个标记。

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