C# 两侧字符计数的正则表达式
我不完全确定这个标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配一个字符串,该字符串以一个或多个C# 两侧字符计数的正则表达式,c#,regex,C#,Regex,我不完全确定这个标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配一个字符串,该字符串以一个或多个()开头,以相同数量的)结尾。我尝试过很多不同的方法,但我不知道如何在正则表达式中实现这一点,或者这是否可能!有人能把我送到正确的方向吗 示例 匹配:(a) 匹配:((a)) 不匹配:((a) 不匹配:((a)) 诸如此类,您就明白了。使用堆栈数据结构,您可以相对轻松地做到这一点。一个字符一个字符地处理字符串,遇到时按(,遇到时弹出)。如果在字符串处理结束时到达时堆栈为空,则该字符串是有效的。
(
)开头,以相同数量的)结尾。我尝试过很多不同的方法,但我不知道如何在正则表达式中实现这一点,或者这是否可能!有人能把我送到正确的方向吗
示例
匹配:(a)
匹配:((a))
不匹配:((a)
不匹配:((a))
诸如此类,您就明白了。使用堆栈数据结构,您可以相对轻松地做到这一点。一个字符一个字符地处理字符串,遇到时按(
,遇到时弹出)
。如果在字符串处理结束时到达时堆栈为空,则该字符串是有效的。否则,如果堆栈为空,则字符串无效
要计数,只需保持堆栈将达到的最大大小的变量。请标记您正在实现的语言。这不是使用regex应该做的事情。正则表达式真的不擅长计数。你可以,但你不必。如果字符串中必须没有(
和)
,那么^\(?:[^()]|(?\())+(?(打开)(?!)\)$
对您有效吗?最后一个对您有效吗?