首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当其中包含字符串时,Regex匹配完整段落块。

当其中包含字符串时,Regex匹配完整段落块。
EN

Stack Overflow用户
提问于 2020-11-26 02:06:53
回答 2查看 91关注 0票数 0

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

文本示例:

代码语言:javascript
复制
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,那么预期的输出将得到所有段落,因为它们都包含了单行或多行的这句话。

NOMEAR ISABELLE FERREIRA ZARONI,ID Funcional . 5100796-7,para,com validade a contar de 16 de novembro de 2020,o cargo em comiss o de Assessor,símbolo DAS-7,da Sub- Sub Sub Concess de Concess es Parcerias,da秘书para de Estado de Planejamento e Gest o,anteriormente por 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 . 5092869-4 para,com validade a contar de 16 de novembro de 2020,o cargo em comiss o de Assessor,símbolo DAS-7,da KARINE de Estado de Planejamento e Gest o,anteriormente por Amauri Ferrei- ra do Carmo,ID FUNCIONAL编号5099579-0。程序编号SEI-1 2 0 0 0 1/0 1 4 6 11 /2 0 2 0

NOMEAR ROSIONE FERNANDES de S,ID Funcional . 4413710-9,para,com validade a contar de 16 de novembro de 2020,o cargo em comiss o de Assistente II,símbolo DAI-6,da秘书para de Estado de Planejamento e Gest o,anteriormente - pado por Luis Henrique Ferreira DE Aquino,ID FUNCIONAL编号1914315- 0。国家统计局-120001/014825/2020。

EXONERAR,com validade a contar de 16 DE novembro de 2020,LUIS HENRIQUE FERREIRA de AQUINO,ID FUNCIONAL . 1914315-0,do cargo em comiss o de Assistente II,símbolo DAI-6,da秘书LUIS de Estado de Planejamento e Gest o。国家统计局- 120001/014825/2020。

我已经尝试过的

代码语言:javascript
复制
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)

当前输出:

“秘书Gest de Estado de Planejamento e Gest o,anteriormente -”,“SEI de Estado de Planejamento e Gest o. Processo n.SEI-”

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-26 02:22:02

一种不用re的方法

代码语言:javascript
复制
[i for i in text.split("\n\n") 
 if "da Secretaria de Estado de Planejamento e Gestão" in i.replace("\n", " ")]

输出:

代码语言:javascript
复制
['NOMEAR ISABELLE FERREIRA ZARONI, ID FUNCIONAL Nº\n5100796-7, para exercer, com validade a contar de 16 de novembro\nde 2020, o cargo em comissão de Assessor, símbolo DAS-7, da Sub-\nsecretaria de Concessões e Parcerias, da Secretaria de Estado de\nPlanejamento 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 para\nexercer, com validade a contar de 16 de novembro de 2020, o cargo\nem comissão de Assessor, símbolo DAS-7, da Secretaria de Estado\nde 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 novembro\nde 2020, o cargo em comissão de Assistente II, símbolo DAI-6, da\nSecretaria 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, da\nSecretaria de Estado de Planejamento e Gestão. Processo nº SEI-\n120001/014825/2020.']
票数 3
EN

Stack Overflow用户

发布于 2020-11-26 04:00:53

你可以试试这个:

代码语言:javascript
复制
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
  • REGEX_text是继re.compile之后的da\s+Secretaria\s+de\s+Estado\s+de\s+Planejamento\s+e\s+Gestão

有关更多信息,请参见演示-regex1 1演示-regex2 2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65015192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档