Chris wrote: > I need a pattern that matches a string that has the same number of '(' > as ')': > findall( compile('...'), '42^((2x+2)sin(x)) + (log(2)/log(5))' ) = [ > '((2x+2)sin(x))', '(log(2)/log(5))' ] > Can anybody help me out? >
No, there is so such pattern. You will have to code up a function. Consider what your spec really is: '42^((2x+2)sin(x)) + (log(2)/log(5))' has the same number of left and right parentheses; so does the zero-length string; so does ') + (' -- perhaps you need to add 'and starts with a "("' Consider what you are going to do with input like this: print '(' + some_text + ')' Maybe you need to do some lexical analysis and work at the level of tokens rather than individual characters. Which then raises the usual question: you have a perception that regular expressions are the solution -- to what problem?? HTH, John -- http://mail.python.org/mailman/listinfo/python-list