获取正则表达式匹配任意次数的组

2024-05-16 07:20:31 发布

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

给定字符串:

Created by [[User:One|One]] ([[User talk:One|talk]]), [[User:Two|Two]] ([[User talk:Two|talk]]). Nominated by [[User:Three|Three]] ([[User talk:Three|talk]]) at 23:47, 25 January 2014 (UTC)

我怎样才能得到一个类似(\[\[User:(.*?)\|.*?\]\]\s?)(它将匹配[[User:One|One]])的正则表达式来递归地匹配它,直到它到达. 

先谢谢你


Tags: 字符串byoneattalkthreeutctwo
1条回答
网友
1楼 · 发布于 2024-05-16 07:20:31

您可以使用“findall”,它为您提供一个包含字符串中所有匹配项的列表:

import re

str = "Created by [[User:One|One]] ([[User talk:One|talk]]), [[User:Two|Two]] ([[User talk:Two|talk]]). Nominated by [[User:Three|Three]] ([[User talk:Three|talk]]) at 23:47, 25 January 2014 (UTC), How could I get a regex like (\[\[User:(.*?)\|.*?\]\]\s?)"

matcher = re.compile("(\[\[User:(.*?)\|.*?\]\]\s?)")
print matcher.findall(str)

http://docs.python.org/2/library/re.html#re.findall

如果要始终在".&nbsp"处完成,可以拆分字符串,并仅将第一个元素作为:

untilnbsp = str.split(".&nbsp")[0]

这将为您提供字符串"Created by [[User:One|One]] ([[User talk:One|talk]]), [[User:Two|Two]] ([[User talk:Two|talk]])",现在您可以将findall与它一起使用

相关问题 更多 >