首页 > 解决方案 > 正则表达式计算两侧的字符

问题描述

我不完全确定标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配以一个或多个('s 开头并以相同数量)'s 结尾的字符串。我尝试了很多不同的东西,但我不知道如何在正则表达式中做到这一点,或者是否有可能!任何人都可以向我发送正确的方向吗?

例子

匹配:(a)

匹配:((a))

不匹配:((a)

不匹配:((a)))

等等等等,你明白了。

标签: c#regex

解决方案


您可以使用堆栈数据结构相对容易地做到这一点。你一个字符一个字符地处理字符串,遇到就push,遇到就(pop )。如果在字符串处理结束时您到达的堆栈为空,则该字符串是有效的。否则,如果您遇到带有空堆栈的 ')',则该字符串无效。

要计数,只需维护堆栈将达到的最大大小的变量。


推荐阅读