Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两侧字符计数的正则表达式_C#_Regex - Fatal编程技术网

C# 两侧字符计数的正则表达式

C# 两侧字符计数的正则表达式,c#,regex,C#,Regex,我不完全确定这个标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配一个字符串,该字符串以一个或多个()开头,以相同数量的)结尾。我尝试过很多不同的方法,但我不知道如何在正则表达式中实现这一点,或者这是否可能!有人能把我送到正确的方向吗 示例 匹配:(a) 匹配:((a)) 不匹配:((a) 不匹配:((a)) 诸如此类,您就明白了。使用堆栈数据结构,您可以相对轻松地做到这一点。一个字符一个字符地处理字符串,遇到时按(,遇到时弹出)。如果在字符串处理结束时到达时堆栈为空,则该字符串是有效的。

我不完全确定这个标题是否有意义,但我不确定如何更好地解释。我正在尝试匹配一个字符串,该字符串以一个或多个
)开头,以相同数量的
)结尾。我尝试过很多不同的方法,但我不知道如何在正则表达式中实现这一点,或者这是否可能!有人能把我送到正确的方向吗

示例

匹配:
(a)

匹配:
((a))

不匹配:
((a)

不匹配:
((a))


诸如此类,您就明白了。

使用堆栈数据结构,您可以相对轻松地做到这一点。一个字符一个字符地处理字符串,遇到
时按(
,遇到
时弹出)
。如果在字符串处理结束时到达时堆栈为空,则该字符串是有效的。否则,如果堆栈为空,则字符串无效


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

请标记您正在实现的语言。这不是使用regex应该做的事情。正则表达式真的不擅长计数。你可以,但你不必。如果字符串中必须没有
,那么
^\(?:[^()]|(?\())+(?(打开)(?!)\)$
对您有效吗?最后一个对您有效吗?