我想知道是否可以为以下数据模式制作正则表达式:
'152:Ashkenazi A、Benlifer A、Korenblit J、Silberstein SD。'
string = '152: Ashkenazi A, Benlifer A, Korenblit J, Silberstein SD.'
我正在使用这个正则表达式(使用 Python 的 re 模块)来提取这些名称:
re.findall(r'(\d+): (.+), (.+), (.+), (.+).', string, re.M | re.S)
结果:
[('152', 'Ashkenazi A', 'Benlifer A', 'Korenblit J', 'Silberstein SD')]
现在尝试使用不同数量(少于 4 个或多于 4 个)的名称数据模式不再有效,因为 RegEx 预计只会找到其中的 4 个:
(.+), (.+), (.+), (.+).
我找不到概括这种模式的方法。
最佳答案
正则表达式可能不是解决此问题的最佳方法。你可以使用 split()
:
>>> s = '152: Ashkenazi A, Benlifer A, Korenblit J, Silberstein SD.'
>>> s.split(": ")
['152', 'Ashkenazi A, Benlifer A, Korenblit J, Silberstein SD.']
>>> s.split(": ")[1].split(", ")
['Ashkenazi A', 'Benlifer A', 'Korenblit J', 'Silberstein SD.']
关于python - 正则表达式问题求助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322735/