import re
regex = re.compile(r"(?:Nr.\s*nota\s*Folha\s*Data\s*preg.o\n(?<numNota>\d+)\s*(?<numFolha>\d+)\s*(?<dataPregao>\d{2}\/\d{2}\/\d{4})\s*(?<corretora>.+)\n(?:1-BOVESPA\s*.*\n)+Resumo\s*dos\s*Neg.cios\s*)")
test_str = ("Nr. nota Folha Data pregão\n"
"2807356 1 02/03/2020\n"
"CLEAR CORRETORA - GRUPO XP\n"
"1-BOVESPA C VISTA GERDAU METPN ED N1 100 8,00 800,00 D\n"
"1-BOVESPA C VISTA ITAUSAPN EDJ N1 200 12,10 2.420,00 D\n"
"1-BOVESPA C VISTA ITAUSAPN EDJ N1 D 500 12,00 6.000,00 D\n"
"1-BOVESPA V VISTA ITAUSAPN EDJ N1 D 100 12,11 1.211,00 C\n"
"1-BOVESPA V VISTA ITAUSAPN EDJ N1 D 100 12,11 1.211,00 C\n"
"Resumo dos Negócios \n"
"Debêntures 0,00\n"
"Vendas à vista 2.422,00\n"
"Compras à vista 9.220,00\n"
"Opções - compras 0,00\n"
"Opções - vendas 0,00\n"
"Operações à termo 0,00\n"
"Valor das oper. c/ títulos públ. (v. nom.) 0,00\n"
"Valor das operações 11.642,00\n"
"Resumo Financeiro \n"
"Clearing \n"
"Valor líquido das operações 6.798,00 D\n"
"Taxa de liquidação 2,83 D\n"
"Taxa de Registro 0,00 D\n"
"Total CBLC 6.800,83 D\n"
"Bolsa \n"
"Taxa de termo/opções 0,00 D\n"
"Taxa A.N.A. 0,00 D\n"
"Emolumentos 0,39 D\n"
"Total Bovespa / Soma 0,39 D\n"
"Custos Operacionais \n"
"\"\" \n"
"Taxa Operacional 0,00 D\n"
"Execução 0,00 \n"
"Taxa de Custódia 0,00 \n"
"Impostos 0,00 \n"
"I.R.R.F. s/ operações, base R$0,00 0,00 \n"
"Outros 0,00 C\n"
"Total Custos / Despesas 0,00 D\n"
"Nr. nota Folha Data pregão\n"
"3408171 1 11/03/2020\n"
"CLEAR CORRETORA - GRUPO XP\n"
"1-BOVESPA C VISTA VIVER ON NM 100 1,79 179,00 D\n"
"Resumo dos Negócios \n"
"Debêntures 0,00\n"
"Vendas à vista 0,00\n"
"Compras à vista 179,00\n"
"Opções - compras 0,00\n"
"Opções - vendas 0,00\n"
"Operações à termo 0,00\n"
"Valor das oper. c/ títulos públ. (v. nom.) 0,00\n"
"Valor das operações 179,00\n"
"Resumo Financeiro \n"
"Clearing \n"
"Valor líquido das operações 179,00 D\n"
"Taxa de liquidação 0,04 D\n"
"Taxa de Registro 0,00 D\n"
"Total CBLC 179,04 D\n"
"Bolsa \n"
"Taxa de termo/opções 0,00 D\n"
"Taxa A.N.A. 0,00 D\n"
"Emolumentos 0,00 D\n"
"Total Bovespa / Soma 0,00 C\n"
"Custos Operacionais \n"
"\"\" \n"
"Taxa Operacional 0,00 D\n"
"Execução 0,00 \n"
"Taxa de Custódia 0,00 \n"
"Impostos 0,00 \n"
"I.R.R.F. s/ operações, base R$0,00 0,00 \n"
"Outros 0,00 C\n"
"Total Custos / Despesas 0,00 D\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html