Форматирование необработанной строки в Python при использовании регулярного выражения с точным соответствием - PullRequest
1 голос
/ 06 марта 2019

Префикс fr может сочетать флаг f и r.
Но когда дело доходит до точного соответствия регулярному выражению, кажется, что оно не может правильно отформатировать необработанную строку:

import re

RE1 = r'123'
RE2 = re.compile(fr'@{3} {RE1}')

Тогда RE2.pattern станет '@3 123',

но я хочу '@{3} 123'.

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Вы должны экранировать скобки, окружающие 3, например, иначе они будут интерпретироваться как интерполяция строк:

import re

RE1 = r'123'
RE2 = re.compile(fr'@{{3}} {RE1}')
print(RE2)

Это производит:

@{3} 123

Ссылка: https://www.python.org/dev/peps/pep-0498/

Обратите внимание, что правильный способ получить буквенную скобку появляется в результирующее значение строки удваивает скобку:

>>> f'{{ {4*10} }}'
'{ 40 }'
>>> f'{{{4*10}}}'
'{40}'
0 голосов
/ 06 марта 2019

RE2 = re.compile (r '@ {3}' + RE1)

У меня работает, заметьте:

RE2.pattern

'@ {3} 123'

Надеюсь, это поможет.

...