Regex匹配包含字符串的完整段落块



我有一个文本文件,如果其中包含字符串,我想从中匹配完整的段落块,但我当前的regex无法匹配包括新行在内的完整段落。

文本示例:

NOMEAR ISABELLE FERREIRA ZARONI, ID FUNCIONAL Nº
5100796-7, para exercer, com validade a contar de 16 de novembro
de 2020, o cargo em comissão de Assessor, símbolo DAS-7, da Sub-
secretaria de Concessões e Parcerias, da Secretaria de Estado de
Planejamento e Gestão, anteriormente ocupado por Vinicius dos San-
tos Silva, ID Funcional n° 5108029-0. Processo nº SEI-
1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .
NOMEAR KARINE MATOS DIAS, ID FUNCIONAL Nº 5092869-4 para
exercer, com validade a contar de 16 de novembro de 2020, o cargo
em comissão de Assessor, símbolo DAS-7, da Secretaria de Estado
de Planejamento e Gestão, anteriormente ocupado por Amauri Ferrei-
ra do Carmo, ID Funcional nº 5099579-0. Processo nº SEI-
1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .
NOMEAR ROSIONE FERNANDES DE SÁ, ID FUNCIONAL Nº
4413710-9, para exercer, com validade a contar de 16 de novembro
de 2020, o cargo em comissão de Assistente II, símbolo DAI-6, da
Secretaria de Estado de Planejamento e Gestão, anteriormente ocu-
pado por Luis Henrique Ferreira de Aquino, ID Funcional nº 1914315-
0. Processo nº SEI-120001/014825/2020.
EXONERAR, com validade a contar de 16 de novembro de 2020,
LUIS HENRIQUE FERREIRA DE AQUINO, ID FUNCIONAL Nº
1914315-0, do cargo em comissão de Assistente II, símbolo DAI-6, da
Secretaria de Estado de Planejamento e Gestão. Processo nº SEI-
120001/014825/2020.

从上面的文本块中,如果它包含da Secretaria de Estado de Planejamento e Gestão,我想匹配整个段落。因此,预期的输出是获取所有段落,因为所有段落都包含单行或多行中的句子

ISABELLE FERREIRA ZARONI,ID函数Nº5100796-7,练习者,11月16日生效2020年,o货物评估委员会,símbolo DAS-7,da Sub-Concessões e Parcerias秘书处Planejamento e Gestão,Vinicius dos San的前方-tos Silva,ID Funcional n°5108029-0。SEI流程-1 2 0 0 0 1/0 1 4 6 11/2 0 2 0。

NOMEAR KARINE MATOS DIAS,ID FUNCIONAL Nº5092869-4 para2020年11月16日生效,货物em comissão de Assessor,símbolo DAS-7,Estado秘书Planejamento e Gestão,Amauri Ferrei的前一个职位-ra do Carmo,ID Funcional nº5099579-0。SEI流程-1 2 0 0 0 1/0 1 4 6 11/2 0 2 0。

玫瑰红的名称,ID函数Nº4413710-9,执行器,11月16日生效2020年,o cargo em comissão de Assistente II,símbolo DAI-6,daPlanejamento和Gestão国家秘书处-路易斯·恩里克·费雷拉·德·阿基诺,ID Funcional nº1914315-0.SEI-120001/014825/2020号工艺。

EXONERAR,于2020年11月16日生效,路易斯·亨利·费雷拉·德·阿基诺,我的职能1914315-0,做货物em comissão de Assistente II,símbolo DAI-6,daPlanejamento和Gestão国家秘书处。SEI流程-120001/014825/2020.

我尝试过的

import re
pattern = re.compile(r'.*Secretaria de Estado de Planejamento e Gestão.*', re.MULTILINE)
with open('pdf_text.txt', 'r') as file:
data = file.read()
matched = pattern.findall(data)
print (matched)

我的当前输出:

"Planejamento e Gestão Estado部长,前部长","Planejamento和Gestão国家秘书处。处理SEI-']

这个输出有两个问题,首先它与这里的整个段落块不匹配,然后没有采用单行或多行中存在句子的所有块

不使用re:的单向

[i for i in text.split("nn") 
if "da Secretaria de Estado de Planejamento e Gestão" in i.replace("n", " ")]

输出:

['NOMEAR ISABELLE FERREIRA ZARONI, ID FUNCIONAL Nºn5100796-7, para exercer, com validade a contar de 16 de novembronde 2020, o cargo em comissão de Assessor, símbolo DAS-7, da Sub-nsecretaria de Concessões e Parcerias, da Secretaria de Estado denPlanejamento e Gestão, anteriormente ocupado por Vinicius dos San-ntos Silva, ID Funcional n° 5108029-0. Processo nº SEI-n1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .',
'NOMEAR KARINE MATOS DIAS, ID FUNCIONAL Nº 5092869-4 paranexercer, com validade a contar de 16 de novembro de 2020, o cargonem comissão de Assessor, símbolo DAS-7, da Secretaria de Estadonde Planejamento e Gestão, anteriormente ocupado por Amauri Ferrei-nra do Carmo, ID Funcional nº 5099579-0. Processo nº SEI-n1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .',
'NOMEAR ROSIONE FERNANDES DE SÁ, ID FUNCIONAL Nºn4413710-9, para exercer, com validade a contar de 16 de novembronde 2020, o cargo em comissão de Assistente II, símbolo DAI-6, danSecretaria de Estado de Planejamento e Gestão, anteriormente ocu-npado por Luis Henrique Ferreira de Aquino, ID Funcional nº 1914315-n0. Processo nº SEI-120001/014825/2020.',
'EXONERAR, com validade a contar de 16 de novembro de 2020,nLUIS HENRIQUE FERREIRA DE AQUINO, ID FUNCIONAL Nºn1914315-0, do cargo em comissão de Assistente II, símbolo DAI-6, danSecretaria de Estado de Planejamento e Gestão. Processo nº SEI-n120001/014825/2020.']

你可以试试这个:

text='da Secretaria de Estado de Planejamento e Gestão'
REGEX_text=re.compile(re.sub('s','\s+',f'{text}'), re.IGNORECASE)
REGEX_paragraph=re.compile(r'^((?:[^n]+n)+)',flags=re.MULTILINE)
filtered_Paragraphs= [x for x in REGEX_paragraph.findall(data) if REGEX_text.search(x)]
for paragraph in filtered_Paragraphs:
print(paragraph)

注意

  • data就是您的text-example
  • CCD_ 4是执行CCD_ 6之后的CCD_

请参阅demo-regex1和demo-regex2了解更多信息。

最新更新