python - 正则表达式仅匹配第二个条目
问题描述
我需要一个匹配所有个体企业家姓名的正则表达式。所以,我写了下一个:
((?i)индивидуальный предприниматель|ип) [А-Я][а-я]+ [А-Я](\.|[а-я]+) [А-Я](\.|[а-я]+)
在文本中:
Индивидуальный предприниматель Шаладко Пётр Владиславович, именуемый в дальнейшем “Арендодатель”。и индивидуальный предприниматель Сергеев Денис Александрович, действующий на основании Свидетельства, именуемый в дальнейшем "Арендатор", заключили настоящий договор о нижеследующем:
我的表达式只匹配一个条目:
индивидуальный предприниматель Сергеев Денис Александрович
忽略
Индивидуальный предприниматель Шаладко Пётр Владиславович
为什么会这样?我错过了哪里?
解决方案
俄语字母表包含 33 个字母,其中一个ё
/Ё
不属于а-я
andА-Я
范围。将它们添加到字符类中:
(?i)(?:индивидуальный предприниматель|ип) [А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+)
请参阅正则表达式演示。我还使用非捕获组来提取仅与re.findall
.
如果您只需要提取名称,请使用捕获组 ( ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))
) 包装正则表达式模式的该部分:
re.findall(r'(?i)(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', text)
import re
text = 'Индивидуальный предприниматель Шаладко Пётр Владиславович, именуемый в дальнейшем "Арендодатель". и индивидуальный предприниматель Сергеев Денис Александрович, действующий на основании Свидетельства, именуемый в дальнейшем "Арендатор", заключили настоящий договор о нижеследующем:'
rx = re.compile(r'(?:индивидуальный предприниматель|ип) ([А-ЯЁ][а-яё]+ [А-ЯЁ](?:\.|[а-яё]+) [А-ЯЁ](?:\.|[а-яё]+))', re.I)
print(rx.findall(text))
输出:['Шаладко Пётр Владиславович', 'Сергеев Денис Александрович']
推荐阅读
- python - 在python中使用条件迭代子列表中的下一项
- php - PHTML 文件无法在 XAMPP 服务器 localhost 上执行 PHP 代码
- pandas - How to sort data using the groupby function in python?
- r - set.seed(x) - does the value of x matter?
- shell - 鼻子测试通过多个测试跳过python中的某些测试
- excel - 我正在尝试在所有选定工作表的指定范围内粘贴某个公式
- android - 如何在向上滑动或单击事件时转换 CardView 的大小和形式?
- java - Java 安卓白屏
- auth0 - Paw 和 Auth0 观众
- javascript - 使用正则表达式的字符串中相似字符的唯一序列