У меня есть файл регулярных выражений, который я читаю и компилирую. Проблема, с которой я сталкиваюсь, заключается в том, что регулярное выражение иногда приводит \.

Z\\d*\\.file_\\.?

Вместо

Z\d*\.file_\.?

Это иногда соответствует, но другие нет.

-2
user3525290 8 Окт 2018 в 21:48

2 ответа

Лучший ответ

Скорее всего, он не совпадает при использовании необработанной строки и двойной обратной косой черты.

s = "ABC 23"

re.findall('\d+',s)
['23']

re.findall(r'\d+',s)

['23']

re.findall('\\d+',s)
['23']

re.findall(r'\\d+',s)     

[]
1
LetzerWille 10 Окт 2018 в 00:58

Не знаю, хотите ли вы этого, но если вы прочитали документацию по операциям с регулярными выражениями

Это говорит:

«Регулярные выражения используют символ обратной косой черты ('\'), чтобы указать специальные формы или разрешить использование специальных символов без вызова их специального значения»

А также :

«Решение заключается в использовании необработанной строковой нотации Python для шаблонов регулярных выражений; обратная косая черта не обрабатывается каким-либо особым образом в строковом литерале с префиксом« r »»

Примере:

regex= re.compile(r'string')
0
tolis 8 Окт 2018 в 19:13