正则表达式无法识别其他行

2024-06-16 13:27:29 发布

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

我有一个正则表达式,我想匹配一些东西: 这里有一个到示例和代码的链接,我已经开始了,但是对于我无法确定的错误,在我的正则表达式中没有识别某些行:http://regex101.com/r/oL4bB5/1

字符串示例:

例1:Tommy Berry

表2:Ms Winona Costin (a3/47kg)

例3:Ms Kathy O'Hara

在python中使用findall的最终结果:

例1:[“汤米·贝里”]

例2:[“Ms”,“Winona Costin”,“3”,“47”]

例3:[“女士”,“凯西·奥哈拉”]

如您所见,我想分离字符串开头的Ms,括号内的数字并保留全名。 谢谢你的帮助,谢谢


编辑

名称可以包含数字和特殊字符,例如'-. etc.: 例如:Samuel L. Jackson-Pitt


Tags: 字符串代码comhttp示例链接错误数字
2条回答

你要找的是:(demo

^(Ms)?([\w '-]+)(?:.*?(\d+)\/(\d+))?

记住使用re.MULTILINE

我想你想要这样的东西

^(Ms)?\s*([\w '-]+)(?= \(|$)(?: *\(\D*(\d+)\D*(\d+)[^\n]*)?$

DEMO

>>> import re
>>> s = """Brodie Loy (a3/53kg)
Hugh Bowman
Ms Winona Costin (a3/47kg)
James McDonald
Ms Kathy O'Hara"""
>>> m = re.findall(r"^(Ms)?\s*([\w '-]+)(?= \(|$)(?: *\(\D*(\d+)\D*(\d+)[^\n]*)?$", s, re.M)
>>> m
[('', 'Brodie Loy', '3', '53'), ('', 'Hugh Bowman', '', ''), ('Ms', 'Winona Costin', '3', '47'), ('', 'James McDonald', '', ''), ('Ms', "Kathy O'Hara", '', '')]
>>> [tuple(s for s in tup if s) for tup in m]
[('Brodie Loy', '3', '53'), ('Hugh Bowman',), ('Ms', 'Winona Costin', '3', '47'), ('James McDonald',), ('Ms', "Kathy O'Hara")]

相关问题 更多 >