regex for multiple whitespace-only lines

Mark Tolonen metolone+gmane at gmail.com
Mon Apr 13 05:45:42 CEST 2009


"Phil Mayes" <olivebr at olivebr.com> wrote in message 
news:5.2.1.1.0.20090412194731.013d02e0 at olivebr.com...
>I am trying to search for 1 or more empty or white-space-only lines.
> Empty lines work:
> >>> re.compile('(?m)(^$){1,2}')
> <_sre.SRE_Pattern object at 0x010F9218>
>
> One line with possible whitespace works:
> >>> re.compile('(?m)(^\s*$)')
> <_sre.SRE_Pattern object at 0x010F7860>
>
> Multiple lines with possible whitespace don't:
> >>> re.compile('(?m)(^\s*$)+')
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in <module>
>   File "C:\Python25\lib\re.py", line 180, in compile
>     return _compile(pattern, flags)
>   File "C:\Python25\lib\re.py", line 233, in _compile
>     raise error, v # invalid expression
> error: nothing to repeat
>
> Does anyone know a work-round?

PythonWin 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit 
(Intel)] on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for 
further copyright information.
>>> import re
>>> data='hello\n\n\n\n\ngoodbye\n' # 4 blank lines
>>> re.search('(?m)^\s*\n',data).group(0)
'\n\n\n\n'

Note that $ in MULTILINE mode matches just before a newline or the end of a 
string, so it won't include the last newline.  \s* is greedy and will match 
multiple lines.

-Mark





More information about the Python-list mailing list