# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = 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 = re.finditer(regex, test_str)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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