Python正则表达式:查找名字和姓氏

2024-10-01 09:25:25 发布

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

我在一个字符串中有一组名字,每个名字+姓氏都位于'>;'和'>;'内。因此,字符串可以是,例如'uselessdataetc<Michael Bloomberg>blahblah<William Handler>blahblah',我希望它返回'Michael Bloomberg''William Handler'

这是我使用的正则表达式:

nameregex = '<([a-z]+|\s)*>'

我在用忽略案例当使用正则表达式时。它当前只返回姓氏。所以它返回的是“彭博社”,“处理程序”。在

有人知道为什么会这样吗?在


Tags: 字符串gt处理程序名字案例handlerwilliam姓氏
3条回答

你可以试试

nameregex = r'<([^>]+)>'

搜索:

r'<([^>]+)>'

相反,找到任何不是结尾字符的内容。在

演示:

^{pr2}$

正则表达式在每组字母空白处使用一个捕获组,并且只返回<...>尖括号内的最后一个匹配,因为即使一个捕获组匹配多个模式,它也不会成倍增加。Michael Bloomberg是3个匹配项;(Michael)( )(Bloomberg),对于捕获组,只返回最后一个匹配项。在

您可以使用以下方法使您的版本正常工作:

nameregex = '<((?:[a-z]+|\s)*)>'

或者在character类中包含空格并删除外部通配符:

nameregex = '<([a-z\s]+)>'

简单回答:

nameregex = r'<([^>]+)>'

在您的情况下:

^{pr2}$

或者更简单:

>>> re.findall(r'<([^>]+)>','uselessdataetc<Michael Bloomberg>blahblah<William Handler>blahblah')
['Michael Bloomberg', 'William Handler']

相关问题 更多 >