need some regular expression help
John Machin
sjmachin at lexicon.net
Sun Oct 8 00:06:28 CEST 2006
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
More information about the Python-list
mailing list