Python 将重复的子字符串作为字符串

Python 将重复的子字符串作为字符串,python,regex,string,substring,Python,Regex,String,Substring,我有一个Python字符串,如下所示: str = "Surname:.......1 of 10 Surname:........2 of 10 Surname.........3 of 10............." 我想获取表单的每个子字符串: “姓氏:……共10名” 然后编辑它 如何获取以相同形式开始和结束的n(上面是10)个子字符串? 我尝试了以下方法: str = 'Surname:mike 1 of 3 Surname:uknown of 3 Surname:littl

我有一个Python字符串,如下所示:

str = "Surname:.......1 of 10 Surname:........2 of 10 Surname.........3 of 10............."
我想获取表单的每个子字符串:

“姓氏:……共10名”

然后编辑它

如何获取以相同形式开始和结束的n(上面是10)个子字符串? 我尝试了以下方法:

    str = 'Surname:mike 1 of 3 Surname:uknown of 3 Surname:little 3 of 3'
    x = re.findall("Surname:.*[0-9]*\s*of", str)
    print(x)
但结果是:

['Surname:mike 1 of 3 Surname:uknown of 3 Surname:little 3 of 3']
我想要这样的东西:

['Surname:mike 1 of 3','Surname:unkown 2 of 3','Surname:little 3 of 3']

当然,我认为有一种迭代字符串的解决方案,但首先我想看看是否有另一种代码更少的解决方案。

默认情况下,python中的正则表达式与可能的最大值匹配。添加一个
,使其尽可能小:

x = re.findall("Surname:.*?[0-9]*\s*of", str)
*?
匹配零个或多个事物的最小可能序列,而
*
匹配最大可能序列

只查找第一次命中。改为使用re.match()。如果它仍然不起作用,请向我们展示您的正则表达式以及您如何应用正则表达式的代码。