python - 正则表达式问题求助

标签 python regex unicode string

我想知道是否可以为以下数据模式制作正则表达式:

'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/

相关文章:

python - 如何获取日期列表中一个月的最后一天

python - 以特殊字符开头或结尾的单词边界会产生意想不到的结果

javascript - 将适用于 php 的 REGEX 转换为 Javascript

windows - Emacs 在重新加载时不显示 Unicode

python - 加入混合类型的列表,引号只包含在字符串周围

python - 在 for 循环中创建并命名 pandas 系列

python - 从字符串 Python 中去除商标符号

Javascript 拆分字符串

c# - 由文化敏感的 String.IndexOf 方法匹配的子字符串的长度

ios - iOS 应用程序名称中的 Unicode 字符?