Какой шаблон следует учитывать в регулярном выражении, включая разрывы строк? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть эта строка:

033-7 |

03399.81086

42000.000002 20852.301017 1 82510000030694



Pagar preferencialmente no

‘Vencimento





















HONORARIOS 04/2020





10/05/2020
‘Beneficiano ‘Agéncia/ldent. Beneficiario
RP METODOS - ASSESSORIA EMPRESARIAL LTDA 0079-5/8108420
‘Data do Documento | Numero do Documento Espécie Doc | Aceite ‘Data do Processamento_ "Nosso numero
16/04/2020 0000000020852 | DM N 16/04/2020 000000020852-3
Carteira Espécie ‘Quantidade ‘Valor (=) Valor do Documento
| Cobranca Simples - ECR 306,94
Instruges (texto de responeabldade do Beneficirio) Ty Descente
, TDabatmento
SERVICOS CONTABEIS RS 306,94
were
7) Outros Reames





(©) Valor Cobrado

Я пытаюсь получить эту часть:

03399.81086

    42000.000002 20852.301017 1 82510000030694

Прямо сейчас я использую этот шаблон:

\d{5}\.?\d{5} ?\d{5}\.?\d{6} ?\d{5}\.?\d{6} ?\d ?\d{13}

Однако разрывы строк могут произойти, как в этом случае. Итак, я хотел бы заменить "." и пробелы "что-нибудь между". Пытался использовать \d{5}\.*?\d{5}.*?\d{5}\.*?\d{6}.*?\d{5}\.*?\d{6}.*?\d.*?\d{13}, но, видимо, использовал его неправильно.

EDIT

Я проверил этот пост, чтобы попытаться найти решение: Как сопоставить любой в нескольких строках регулярного выражения?

Я пробовал добавить ((.|\n)*) в свой шаблон, это выглядело так:

\d{5}((.|\n)*)\d{5}((.|\n)*)\d{5}\((.|\n)*)\d{6}((.|\n)*)\d{5}\((.|\n)*)\d{6}((.|\n)*)\d((.|\n)*)\d{13}

Что мне не хватает?

1 Ответ

1 голос
/ 27 мая 2020

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

  • (?s) шаблон в начале строки ваш шаблон регулярного выражения
  • флаг re.DOTALL (в любой из функций re, например re.compile, re.search, re.findall et c)
  • re.S flag (сокращение от re.DOTALL)

См. соответствующую документацию :

re.S

re.DOTALL

Сделайте '.' специальный символ соответствует любому символу, включая новую строку; без этого флага '.' будет соответствовать чему угодно, кроме новой строки. Соответствует встроенному флагу (? S).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...