DOTALL not working as expected

Stefan Palme kleiner at hora-obscura.de
Thu Jan 18 05:19:36 EST 2007


Just noticed, that it works when *compiling* the pattern:

  import re
  p = re.compile('X.*?Y', re.DOTALL)
  print re.sub(p, 'Z', 'Xab\ncdY')

Still the question - my fault or a bug?

Best regards
-stefan-


On Thu, 18 Jan 2007 11:10:08 +0100, Stefan Palme wrote:
> 
> Hi all,
> 
> using the "re" module of Python (2.3 and 2.4), I tried the following:
> 
>   import re
>   print re.sub('X.*?Y', 'Z', 'Xab\ncdY', re.DOTALL)
> 
> I wanted to replace
>    Xab
>    cdY
> by a single "Z", but the "." in the pattern does not match the 
> included "\n".
> 
> When using the pattern "X(.|\n)*?Y" (explicity including "\n"
> in the set of "any character") I get the wanted result.
> 
> My fault or a bug in the module?
> 
> Thanks
> -stefan-




More information about the Python-list mailing list