v # invalid expression ?
Eric Brunel
eric_brunel at despammed.com
Thu Mar 11 06:38:26 EST 2004
Anthony Liu wrote:
> I am trying to split a string like so:
>
> re.split(',|。|、|!|:|,|?|“|”|)|(|;',
> my_string)
>
> Python complains like so:
>
> Traceback (most recent call last):
> File "C:\Python23\codes\regextest.py", line 27, in
> -toplevel-
> ultimate =
> re.split(',|。|、|!|:|,|?|“|”|)|(|;',
> ch[0])
> File "c:\python23\lib\sre.py", line 156, in split
> return _compile(pattern, 0).split(string,
> maxsplit)
> File "c:\python23\lib\sre.py", line 229, in _compile
> raise error, v # invalid expression
> error: nothing to repeat
>
> Does this mean that the regular expression I pass to
> the split function is not valid?
>
> That expression is just like ',|)|#|!', that is, an
> or-ed list of punctuations. Then why invalid?
Because ?, (, and ) are special characters in regular expressions. You must
escape them with a backslash:
>>> re.split(',|。|、|!|:|,|\\?|\\)|\\(|;', 'foo,bar(spam)')
['foo', 'bar', 'spam', '']
HTH
--
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
More information about the Python-list
mailing list