Почему не срабатывает Python's raw string для regular expression?

Пример:

import re
my_string = """lalalala **************** mimimimi """

#target_symbols = re.findall(r"****************", my_string)   <- Don't work
target_symbols = re.findall("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*", my_string)

print target_symbols

Raw string не работает:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    description = re.findall("****", my_string)
  File "C:\Python27\lib\re.py", line 177, in findall
    return _compile(pattern, flags).findall(string)
  File "C:\Python27\lib\re.py", line 245, in _compile
    raise error, v # invalid expression
error: nothing to repeat

Экранирование каждого символа работает хорошо(возвращает ['****************'] ), но выглядит некрасиво.

Попробуй так:

regexp = re.escape(r"****************")
re.findall(regexp, my_string)
>>> re.findall(regexp, my_string)
['****************']```

https://docs.python.org/2/library/re.html

re.escape(string)
Return string with all non-alphanumerics backslashed; this is useful if you want to match an arbitrary literal string that may have regular expression metacharacters in it.
1 лайк

Поняла, получилось, спасибо!

а чем плохо

re.findall(r"\*+", my_string)
1 лайк