2014-02-24 211 views
2

我想找到除方括号和引号之间的字符串中的所有括号和大括号。正则表达式匹配的括号和大括号

实例:

“{([审批] is_empty)}”

匹配{,(,)和}

“{([Appro公司(版本]等于'B} r')}“

仍匹配{,(,)和}

我也做了正则表达式匹配所有的括号和大括号,但我不能去进一步

@"[\{\}\(\)]" 
+0

[这个问题](http://stackoverflow.com/questions/133601/can-regular-expressions-be-used-to-match-nested-patterns)会给你一些洞察与正则表达式嵌套模式 – Jonesopolis

+0

@ Jonesy,.NET正则表达式实际上可以实现这一点(因为它们不代表* regular *语言;具有平衡组 - 它们代表* context-free *语言,具有更高的计算能力。) –

回答

1

我建议到onle读取字符串,并使用两个布尔值,设置为false squareBrackets和虚假报价,然后,开始读取字符串,如果发现'[',将squareBrackets设置为true,并且如果找到']',则再次设置为false,并且用引号括住,然后只获取{,} (和),而squareBrackets =真实报价=真

我希望这有助于;!d

bool squareBrackets = false; 
bool quotes = false; 

如果您喜欢并打开[或'并且不再读取更多{,},(或)直到找到新的]或',则设置为true。