正则表达式只匹配第二个条目

2024-03-29 09:57:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个正则表达式来匹配所有企业家的名字。所以,我写了下一篇:

((?i)индивидуальный предприниматель|ип) [А-Я][а-я]+ [А-Я](\.|[а-я]+) [А-Я](\.|[а-я]+)

在文本中:

Индивидуальный предприниматель Шаладко Пётр Владиславович, именуемый в дальнейшем "Арендодатель". и индивидуальный предприниматель Сергеев Денис Александрович, действующий на основании Свидетельства, именуемый в дальнейшем "Арендатор", заключили настоящий договор о нижеследующем:

我的表达式只匹配一个条目:

индивидуальный предприниматель Сергеев Денис Александрович

忽略

Индивидуальный предприниматель Шаладко Пётр Владиславович

为什么会这样?我错过了哪里


Tags: 文本表达式条目名字企业家
1条回答
网友
1楼 · 发布于 2024-03-29 09:57:39

俄语字母表包含33个字母,其中一个ё/Ё,不属于а-яА-Я范围。将它们添加到角色类:

(?i)(?:индивидуальный предприниматель|ип) [А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+)

参见regex demo。我还使用非捕获组来提取只与re.findall匹配的完全匹配

如果只需要提取名称,请使用捕获组(([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+)))包装regex模式的该部分:

re.findall(r'(?i)(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', text)

this regex demo

Python demo

import re
text = 'Индивидуальный предприниматель Шаладко Пётр Владиславович, именуемый в дальнейшем "Арендодатель". и индивидуальный предприниматель Сергеев Денис Александрович, действующий на основании Свидетельства, именуемый в дальнейшем "Арендатор", заключили настоящий договор о нижеследующем:'
rx = re.compile(r'(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', re.I)
print(rx.findall(text))

输出:['Шаладко Пётр Владиславович', 'Сергеев Денис Александрович']

相关问题 更多 >