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

Python 正则表达式只匹配第二个条目,python,regex,Python,Regex,我需要一个正则表达式来匹配所有个体企业家的名字。所以,我写了下一篇: ((?i)индивидуальный предприниматель|ип) [А-Я][а-я]+ [А-Я](\.|[а-я]+) [А-Я](\.|[а-я]+) 正文: ааааааааааааааааааааПёаааа дальнейшем "Арендодатель". и индивидуальный предприниматель Сергеев Денис Александрович, действую

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

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

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

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

ч

忽视

аааааааааааПёаааа


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

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

(?i)(?:индивидуальный предприниматель|ип) [А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+)
看。我还使用非捕获组仅使用
re.findall
提取完全匹配

如果只需要提取名称,请使用捕获组(
([А-Яг][г-г]+[А-Яг]+)(?:\.[Я-г]+)[А-Ягг](?:\.[а-г]+)
):

:


输出:
['аааааааПёаааааааааааач']

您确定正则表达式范围在西里尔字母表中的工作方式与预期的一样吗?你应该先检查一下。@TimBiegeleisen,是的,它是有效的,但正如我从下面的答案中所知道的。
re.findall(r'(?i)(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', text)
import re
text = 'Индивидуальный предприниматель Шаладко Пётр Владиславович, именуемый в дальнейшем "Арендодатель". и индивидуальный предприниматель Сергеев Денис Александрович, действующий на основании Свидетельства, именуемый в дальнейшем "Арендатор", заключили настоящий договор о нижеследующем:'
rx = re.compile(r'(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', re.I)
print(rx.findall(text))