Regex not matching a string
Peter Otten
__peter__ at web.de
Wed Jan 9 05:57:03 EST 2013
python.prog29 at gmail.com wrote:
> In the following code ,am trying to remove a multi line - comment that
> contains "This is a test comment" for some reason the regex is not
> matching.. can anyone provide inputs on why it is so?
> def find_and_remove(haystack, needle):
> pattern = re.compile(r'/\*.*?'+ needle + '.*?\*/', re.DOTALL)
> return re.sub(pattern, "", haystack)
If a comment does not contain the needle "/\*.*?" extends over the end of
that comment:
>>> re.compile(r"/\*.*?xxx").search("/* xxx */").group()
'/* xxx'
>>> re.compile(r"/\*.*?xxx").search("/* yyy */ /* xxx */").group()
'/* yyy */ /* xxx'
One solution may be a substitution function:
>>> def sub(match, needle="xxx"):
... s = match.group()
... if needle in s:
... return ""
... else:
... return s
...
>>> re.compile(r"/\*.*?\*/").sub(sub, "/* yyy */ /* xxx */")
'/* yyy */ '
More information about the Python-list
mailing list