我一直在使用正则表达式来匹配方括号[*]中嵌入的字符串:
new Regex(@"\[(?<name>\S+)\]", RegexOptions.IgnoreCase);
我还需要匹配一些看起来像的代码: [TESTTABLE:A,B,C,D]
它有空格,逗号,冒号
您能否指导我如何修改上述正则表达式以包含此类代码 附:其他代码没有空格/特殊字符,但始终包含在[...]中。
答案 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将包含冒号后的部分。然后,您可以拆分','并修剪每个条目以获得各个部分。