带可选组的Python正则表达式,至少一个匹配项
所以我想我可以用给定的字符串快速地执行re.match(),但我被卡住了 使用给定的字符串列表带可选组的Python正则表达式,至少一个匹配项,python,regex,Python,Regex,所以我想我可以用给定的字符串快速地执行re.match(),但我被卡住了 使用给定的字符串列表 时间是12小时3米12秒 时间是3米12秒 它是12小时3米 12秒后准备好 时间是6小时 我想把它分成3组,H,M和S (?:(\d{1,2})H) (?:(\d{1,2})M) (?:(\d{1,2})S) 很容易,我就可以按组(1-3)访问H、M和S组件。我只是想限制比赛,以满足信条,至少有一个选项组必须被触发,否则它就不匹配。否则这个表达式可以选择为空,并且匹配所有内容,我猜 下面是指向该
- 时间是12小时3米12秒
- 时间是3米12秒
- 它是12小时3米
- 12秒后准备好
- 时间是6小时
使用正向前瞻确保我们至少有一个
H
、M
或S
import re
strings = [
'The Time is 12H 3M 12S',
'The Time is 3M 12S',
'It is 12H 3M',
'Ready in 12S',
'The Time is 6H',
]
for s in strings:
res = re.search(r'(?= \d{1,2}[HMS])(?: (\d{1,2})H)?(?: (\d{1,2})M)?(?: (\d{1,2})S)?', s)
# here __^^^^^^^^^^^^^^^^^
print(res.groups())
输出:
('12', '3', '12')
(None, '3', '12')
('12', '3', None)
(None, None, '12')
('6', None, None)
你的问题是什么?正是我想要的!