import re
regex = re.compile(r"^([ \t]+\d+[ \t]+\d+[A-Z .\/]+\d+[ \t]+\d+[ \t]+\d+[ \t]+\d+)\n(^[ \t]{2,}.*?^\s*$)?", flags=re.MULTILINE | re.DOTALL)
test_str = (" Rede Nacional de Dados Pagina : 1\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
" ************************************\n"
" * *\n"
" * RESPOSTA DA PROG. DE ENTREGAS *\n"
" * *\n"
" ************************************\n"
" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
" ELABORADO POR:\n\n"
" A N F A V E A S I N D I P E C A S\n"
" Rede Nacional de Dados Pagina : 2\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n\n\n"
" INTRODUCAO \n\n\n"
" Este manual foi concebido pela Comissao de E.D.I. da ANFAVEA e SINDIPECAS\n"
" com a finalidade de divulgar e incentivar o uso da tecnologia de E.D.I. \n"
" no Brasil.\n\n"
" Sob o patrocinio da ANFAVEA, foram desenvolvidos os estudos preliminares \n"
" que conduziram ao primeiro esforco de padronizacao EDI no Brasil. \n\n"
" Em 1987, foi formada uma sub-comissao permanente de padronizaco de forma-\n"
" tos E.D.I., que, embora esteja vinculada aos propositos da industria \n"
" automobilistica, tambem apoia as demais instituicoes no que se refere a \n"
" tecnologia de E.D.I.. A Comissao tem reunioes mensais, na sede da ANFAVEA\n"
" onde se discutem os processos, as praticas e se definem as transacoes de \n"
" E.D.I. a serem praticadas pela industria automobilistica.\n\n"
" Atualmente, ela se compoe de duas subcomissoes: \n\n"
" Sub-comissao de E.D.I. da ANFAVEA\n"
" Comissao de E.D.I. do SINDIPECAS\n\n"
" onde, cada parte (montadoras e fornecedores) levanta as necessidades de \n"
" seus associados, orientam e apresentam propostas a Comissao de E.D.I. \n"
" para avaliacao e aprovacao.\n\n"
" Como ferramenta auxiliar deste trabalho, a Comissao, com o auxilio da APD \n"
" da ANFAVEA, desenvolveu este software que armazena todas as transacoes de-\n"
" finidas neste forum e que permite a qualquer participante, direto ou indi-\n"
" reto, obter as mesmas informacoes.\n\n"
" Voce participa deste processo! Por isso, caso tenha alguma recomendacao, \n"
" critica ou melhorias por favor contate:\n\n"
" ANFAVEA \n"
" Comissao de Informatica e Automacao\n"
" Sub-Comissao de E.D.I.\n"
" At.: APD - Assessoria de Processamento de Dados\n"
" Av. Indianopolis, 496 - Sao Paulo\n"
" CEP 04062-900 Fone: 549-4044\n"
" FAX: 549-4044 r. 225 \n\n"
" SINDIPECAS\n"
" Comissao de E.D.I. \n"
" At.: Assessoria Economica\n"
" Rua Abilio Soares, 1487 - Sao Paulo\n"
" CEP 04005-005 Fone: 884-4599\n"
" FAX: 884-0584\n"
" Rede Nacional de Dados Pagina : 3\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n\n\n"
" 1 - Objetivo\n\n"
" Transacao onde o Forncedor confirma / retifica a Programacao de\n"
" Entregas desejada pelo cliente. \n"
" \n"
" \n"
" \n"
" \n\n\n"
" 2 - Operacionalizacao \n\n"
" E' aconselhavel a leitura do manual RND (REDE NACIONAL DE DADOS - \n"
" ANFAVEA) para um melhor entendimento. \n"
" \n"
" Este manual NAO se destina a problemas tecnicos de comunicacao. \n"
" \n"
" O processo de implementacao desta transacao deve ser definido entre \n"
" clientes e fornecedores e vice-versa. \n"
" \n"
" Os valores que os \"campos\" podem assumir estao descritos nos itens 3.3\n"
" e/ou 4 deste manual. \n\n\n\n"
" 2.1 - Pre-requisitos \n\n"
" Conhecimentos basicos de E.D.I. (Electronic Data Interchange). \n"
" Como sugestao indicamos o manual E.D.I. Sindipecas. \n"
" \n"
" Rede Nacional de Dados Pagina : 4\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n\n\n"
" 2.2 - Validade sobre o conteudo da transmissao\n\n\n\n\n\n\n\n\n\n\n"
" 2.3 - Historico \n\n\n\n"
" VERSAO HOMOLOGACAO VIGENCIA MOTIVO\n"
" ------ ----------- -------- ------------------------------------------------------------\n"
" 00 16/03/89 16/03/89 Revisao grupo de trabalho de 23/02/90 \n"
" \n"
" Rede Nacional de Dados Pagina : 5\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" 3 - Composicao\n\n"
" 3.1 - Modelo Grafico\n\n"
" +-------------------------------------------------------------------------+\n"
" |ITP (1) |\n"
" | Mandatorio |\n"
" | +-------------------------------------------------------------------+|\n"
" | |RP1 (N) ||\n"
" | | Mandatorio ||\n"
" | | +-------------------------------------------------------------+||\n"
" | | |RP2 (N) |||\n"
" | | | Opcional |||\n"
" | | +-------------------------------------------------------------+||\n"
" | | +-------------------------------------------------------------+||\n"
" | | |TE1 (N) |||\n"
" | | | Opcional |||\n"
" | | +-------------------------------------------------------------+||\n"
" | +-------------------------------------------------------------------+|\n"
" | +-------------------------------------------------------------------+|\n"
" | |FTP (1) ||\n"
" | | Mandatorio ||\n"
" | +-------------------------------------------------------------------+|\n"
" +-------------------------------------------------------------------------+\n\n"
" \n"
" 3.2 - Modelo Descritivo\n\n"
" IDENTIF. INDICADOR\n"
" REG DE USO OCORR. SUBORD. NOME DO REGISTRO\n"
" --- ------ ------ ------- ------------------------------\n\n"
" ITP M 1 INICIO DA TRANSMISSAO PROCESSO\n"
" RP1 M N ITP IDENT. PECA P/ RESP. PROG.ENTR\n"
" RP2 O N RP1 ATENDIMENTO DA PROG. ENTREGA \n"
" TE1 O N RP1 TEXTO LIVRE \n"
" FTP M 1 ITP TERMINO TRANSMISSAO PROCESSO \n"
" 3.3 - Elemento Chave da Transacao:\n\n\n\n"
" 0 \n"
" 0 \n"
" 0 \n"
" Rede Nacional de Dados Pagina : 6\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" ITP - INICIO DA TRANSMISSAO PROCESSO\n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 1 1 IDENT. DO TIPO DE REGISTRO M A 3 0 1 3\n"
" Identificacao de um registro de uma determinada transacao de\n"
" comunicacao. Ex.: Registros ITP, PE1, AE2, EF1, etc. \n\n"
" 2 33 IDENTIFICAO DO PROCESSO M N 3 0 4 6\n"
" Numero que identifica a transacao de comunicacao,devendo ser\n"
" definida pela comissao responsavel \n\n"
" 3 34 NUMERO DA VERSAO DA TRANSACAO M N 2 0 7 8\n"
" Numero da versao da transacao deve obedecer o item 2.3 (his-\n"
" torico) do Manual de Transacao. \n\n"
" 4 36 NUMERO DE CONTROLE TRANSMISSAO O N 5 0 9 13\n"
" Numero de controle do movimento contido na transacao de comu\n"
" nicacao, atribuido pelo transmissor. Numero sequencial, para\n"
" cada transmissao e para cada recepcao. \n\n"
" 5 35 IDENT. GERACAO DO MOVIMENTO M N 12 0 14 25\n"
" Data e hora da geracao do movimento, contido na transacao de\n"
" comunicacao. Indicam: AAMMDD e HHMMSS. \n\n"
" 6 37 IDENT. TRANSMISSOR NA COMUNIC. M N 14 0 26 39\n"
" Identificacao do transmissor na comunicacao, representado pe\n"
" lo seu C.G.C. \n\n"
" 7 38 IDENT. RECEPTOR NA COMUNIC. O A 14 0 40 53\n"
" Identificacao do receptor na comunicacao, representado pelo \n"
" seu C.G.C. \n\n"
" 8 151 CODIGO INTERNO DO TRANSMISSOR O A 8 0 54 61\n"
" CODIGO INTERNO PELO QUAL O TRANSMISSOR E' RECONHECIDO PELO \n"
" RECEPTOR. \n\n"
" 9 152 CODIGO INTERNO DO RECEPTOR O A 8 0 62 69\n"
" CODIGO INTERNO PELO QUAL O RECEPTOR E RECONHECIDO PELO \n"
" TRANSMISSOR. \n\n"
" 10 243 NOME DO TRANSMISSOR O A 25 0 70 94\n"
" Nome pelo qual o transmissor e' identificado junto ao seu \n"
" parceiro \n\n"
" 11 244 NOME DO RECEPTOR O A 25 0 95 119\n"
" Nome pelo qual o receptor e' identificado pelo transmissor \n\n"
" 12 9999 ESPACO M A 9 0 120 128\n"
" Rede Nacional de Dados Pagina : 7\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" RP1 - IDENT. PECA P/ RESP. PROG.ENTR\n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 1 1 IDENT. DO TIPO DE REGISTRO M A 3 0 1 3\n"
" Identificacao de um registro de uma determinada transacao de\n"
" comunicacao. Ex.: Registros ITP, PE1, AE2, EF1, etc. \n\n"
" 2 2 COD. FABRICA DE DESTINO M A 3 0 4 6\n"
" Codigo da fabrica de destino do item. \n"
" Este codigo sera combinado entre o cliente e o fornecedor. \n\n"
" 3 3 IDENT. PROGRAMA ATUAL M A 9 0 7 15\n"
" Identific. do Programa de peca/material atual emitido pelo \n"
" cliente, mantendo-se inalterado ate a emissao do novo Pro- \n"
" grama. \n\n"
" 4 4 DATA DO PROGRAMA ATUAL M N 6 0 16 21\n"
" Data de emissao do Programa de Peca/Material atual emitido \n"
" pelo cliente. \n\n"
" 5 7 COD. ITEM DO CLIENTE M A 30 0 22 51\n"
" Codigo interno atribuido pelo cliente para os itens que \n"
" adquire do fornecedor. \n\n"
" 6 8 COD. ITEM DO FORNECEDOR O A 30 0 52 81\n"
" Codigo interno atribuido pelo fornecedor para os itens que \n"
" fornece ao cliente. \n\n"
" 7 9 NUMERO DO PEDIDO DE COMPRA M A 12 0 82 93\n"
" Numero do Pedido de Compra/Contrato de fornecimento de Itens\n"
" emitido pelo cliente. \n\n"
" 8 19 COD. UNIDADE DE MEDIDA M A 2 0 94 95\n"
" Codigo da unidade de medida do item convencionada para a \n"
" transacao de comunicacao. Exs: KG, LT, PC, MT, etc. \n\n"
" 9 22 QUANT. DE CASAS DECIMAIS M N 1 0 96 96\n"
" Quantidade de casas decimais utilizadas em determinadas tran\n"
" sacoes de comunicacao. Ex: registros PE3, RP2, etc. \n\n"
" 10 18 QUANT. LOTE MINIMO O N 12 3 97 108\n"
" Quantidade do lote minimo do item a ser entregue/embarcado \n"
" por vez pelo fornecedor ao cliente. \n\n"
" 11 9999 ESPACO M A 20 0 109 128\n"
" Rede Nacional de Dados Pagina : 8\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" RP2 - ATENDIMENTO DA PROG. ENTREGA \n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 1 1 IDENT. DO TIPO DE REGISTRO M A 3 0 1 3\n"
" Identificacao de um registro de uma determinada transacao de\n"
" comunicacao. Ex.: Registros ITP, PE1, AE2, EF1, etc. \n\n"
" 2 24 DATA ENTREGA/EMBARQUE DO ITEM M N 6 0 4 9\n"
" Data de entrega/embarque do item. Nos casos em que este cam-\n"
" po nao contiver a data, seu conteudo devera ser ajustado en-\n"
" tre as partes. \n\n"
" 3 25 QT DE ENTREGA/EMBARQUE DO ITEM M N 9 0 10 18\n"
" Quantidade de entrega/embarque do item. Este campo esta asso\n"
" ciado aos campos 022 (qt.casas decimais) e 024 (data de en- \n"
" trega) \n\n"
" 4 79 QUANT. DE ITENS A FORNECER M N 9 0 19 27\n"
" E' a quantidade de itens que o fornecedor consegue suprir\n"
" o cliente para uma determinada data. As casa decimais estao \n"
" definidas no campo 022 (unid. casas decimais). \n\n"
" 5 24 DATA ENTREGA/EMBARQUE DO ITEM O N 6 0 28 33\n"
" Data de entrega/embarque do item. Nos casos em que este cam-\n"
" po nao contiver a data, seu conteudo devera ser ajustado en-\n"
" tre as partes. \n\n"
" 6 25 QT DE ENTREGA/EMBARQUE DO ITEM O N 9 0 34 42\n"
" Quantidade de entrega/embarque do item. Este campo esta asso\n"
" ciado aos campos 022 (qt.casas decimais) e 024 (data de en- \n"
" trega) \n\n"
" 7 79 QUANT. DE ITENS A FORNECER O N 9 0 43 51\n"
" E' a quantidade de itens que o fornecedor consegue suprir\n"
" o cliente para uma determinada data. As casa decimais estao \n"
" definidas no campo 022 (unid. casas decimais). \n\n"
" 8 24 DATA ENTREGA/EMBARQUE DO ITEM O N 6 0 52 57\n"
" Data de entrega/embarque do item. Nos casos em que este cam-\n"
" po nao contiver a data, seu conteudo devera ser ajustado en-\n"
" tre as partes. \n\n"
" 9 25 QT DE ENTREGA/EMBARQUE DO ITEM O N 9 0 58 66\n"
" Quantidade de entrega/embarque do item. Este campo esta asso\n"
" ciado aos campos 022 (qt.casas decimais) e 024 (data de en- \n"
" trega) \n"
" Rede Nacional de Dados Pagina : 9\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" RP2 - ATENDIMENTO DA PROG. ENTREGA \n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 10 79 QUANT. DE ITENS A FORNECER O N 9 0 67 75\n"
" E' a quantidade de itens que o fornecedor consegue suprir\n"
" o cliente para uma determinada data. As casa decimais estao \n"
" definidas no campo 022 (unid. casas decimais). \n\n"
" 11 24 DATA ENTREGA/EMBARQUE DO ITEM O N 6 0 76 81\n"
" Data de entrega/embarque do item. Nos casos em que este cam-\n"
" po nao contiver a data, seu conteudo devera ser ajustado en-\n"
" tre as partes. \n\n"
" 12 25 QT DE ENTREGA/EMBARQUE DO ITEM O N 9 0 82 90\n"
" Quantidade de entrega/embarque do item. Este campo esta asso\n"
" ciado aos campos 022 (qt.casas decimais) e 024 (data de en- \n"
" trega) \n\n"
" 13 79 QUANT. DE ITENS A FORNECER O N 9 0 91 99\n"
" E' a quantidade de itens que o fornecedor consegue suprir\n"
" o cliente para uma determinada data. As casa decimais estao \n"
" definidas no campo 022 (unid. casas decimais). \n\n"
" 14 24 DATA ENTREGA/EMBARQUE DO ITEM O N 6 0 100 105\n"
" Data de entrega/embarque do item. Nos casos em que este cam-\n"
" po nao contiver a data, seu conteudo devera ser ajustado en-\n"
" tre as partes. \n\n"
" 15 25 QT DE ENTREGA/EMBARQUE DO ITEM O N 9 0 106 114\n"
" Quantidade de entrega/embarque do item. Este campo esta asso\n"
" ciado aos campos 022 (qt.casas decimais) e 024 (data de en- \n"
" trega) \n\n"
" 16 79 QUANT. DE ITENS A FORNECER O N 9 0 115 123\n"
" E' a quantidade de itens que o fornecedor consegue suprir\n"
" o cliente para uma determinada data. As casa decimais estao \n"
" definidas no campo 022 (unid. casas decimais). \n\n"
" 17 9999 ESPACO M A 5 0 124 128\n"
" Rede Nacional de Dados Pagina : 10\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" TE1 - TEXTO LIVRE \n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 1 1 IDENT. DO TIPO DE REGISTRO M A 3 0 1 3\n"
" Identificacao de um registro de uma determinada transacao de\n"
" comunicacao. Ex.: Registros ITP, PE1, AE2, EF1, etc. \n\n"
" 2 29 TEXTO LIVRE INFORMATIVO M A 40 0 4 43\n"
" Mensagem em formato livre. \n\n"
" 3 29 TEXTO LIVRE INFORMATIVO O A 40 0 44 83\n"
" Mensagem em formato livre. \n\n"
" 4 29 TEXTO LIVRE INFORMATIVO O A 40 0 84 123\n"
" Mensagem em formato livre. \n\n"
" 5 9999 ESPACO M A 5 0 124 128\n"
" Rede Nacional de Dados Pagina : 11\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n"
" LAYOUT DE REGISTRO\n\n"
" FTP - TERMINO TRANSMISSAO PROCESSO \n\n"
" IND.\n"
" SEQ. ELEM NOME DO ELEMENTO USO TIPO TAM. DEC. POSICAO\n"
" ---- ---- ------------------------------ --- ---- --- --- -------\n\n"
" 1 1 IDENT. DO TIPO DE REGISTRO M A 3 0 1 3\n"
" Identificacao de um registro de uma determinada transacao de\n"
" comunicacao. Ex.: Registros ITP, PE1, AE2, EF1, etc. \n\n"
" 2 36 NUMERO DE CONTROLE TRANSMISSAO O N 5 0 4 8\n"
" Numero de controle do movimento contido na transacao de comu\n"
" nicacao, atribuido pelo transmissor. Numero sequencial, para\n"
" cada transmissao e para cada recepcao. \n\n"
" 3 39 QUANT. REGISTROS NA TRANSACAO M N 9 0 9 17\n"
" Quantidade total de registros de uma transacao, incluindo os\n"
" registros ITP e FTP. \n\n"
" 4 245 NUMERO TOTAL DE VALORES O N 17 2 18 34\n"
" Soma dos valores dos registros que foram transmitidos para \n"
" efeito de controle. \n\n"
" 5 201 CATEGORIA DA OPERACAO O A 1 0 35 35\n"
" Indica qual o tipo de transacao foi efetuada na conta corren\n"
" te da empresa. Ex.: d-debito ou c-credito. \n"
" Este elemento faz referencia a um valor. \n\n"
" 6 9999 ESPACO M A 93 0 36 128\n"
" \n"
" Rede Nacional de Dados Pagina : 12\n"
" Sub-Comissao de E.D.I. Transacao : 006\n"
" Manual Operacional Versao : 00\n"
" RESPOSTA DA PROG. DE ENTREGAS Vigencia : 16/03/89\n"
" Emissao : 20/11/00\n\n\n\n"
" 4 - ANEXO \n\n"
" ELEMENTO 002 - COD. FABRICA DE DESTINO \n\n"
" Empresa Codigo Descricao\n\n"
" FIAT 100 Formatado sempre com este valor \n\n"
" GM 01 Sao Caetano do Sul \n\n"
" GM 02 Sao Jose dos Campos \n\n\n\n"
" ELEMENTO 003 - IDENT. PROGRAMA ATUAL \n\n"
" Empresa Codigo Descricao\n\n"
" GM E' uma numeracao crescente que referencia a \n"
" Autorizacao deEntrega de Materiais. Pode ocorrer \n"
" que esta numeracao venhaacompanhada da letra \"R\". \n"
" Neste caso significa que a AEMsofreu uma revisao \n"
" nas suas quantidades. Ex:n. 0545 ou0545R. \n"
" Obs.: Caso o fornecedor receba duas AEM's com a \n"
" mesmanumeracao e ambas revisadas, devera sempre \n"
" prevalecer a AEMcom data mais recente. \n\n"
" FIAT 00000001 Formatado sempre com este valor ")
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