9 AnswersNew Answer
Then I am afraid it won't be doable unless you somehow combine the lazy search for the exact "\(\)" matching, lazy for "\(*\)" and greedy for "\(*\)" and the last obe as a numbered or named group to match as many as possible. Even then, though, there is a problem with "clean" (not disturbed) recurrent parenthesis, like (((()))) I can't seem to find a way for this case :/
There is a better module for this than re. It is called regex and seemingly it does support recursive search: https://pypi.python.org/pypi/regex Just use the ?R pattern. However, using regex for this purpose is still not recommended - simple parsing would be quicker and more efficient.
Are you looking for a syntax matching or just a number of opening and closing beackets being equal?
by the way, here is the (recursive) code. but I'm still looking for one line solution. https://code.sololearn.com/cesSwXg4kmt6/?ref=app
But you can also do it iteratively : def parenthesis(s): count=0 i=0 while count>=0 and i<len(s): if s[i]==')': count-=1 elif s[i]=='(': count+=1 i+=1 return count==0
I may be wrong but I think it is not a regular language that you are trying to check with regex, so it will not work :/
thanks, @Baptiste, I know the problem can be solved in a simple way, as you did. And my code is a mixture of re and code. again, I want to know whether it can be a line like re.findall(pattern, string) is True or False
That is what I answered in my first comment. You can define the input with good parenthesis as a language (a set of word of a finite/infinite size, in our case infinite). I will not go into the details but if you can prove it is a regular language, then it can be define by a regular expression (the reciprocate is also true). And I think it is not possible
syntax matching if possible