[英]Python regex with optional Groups, one match at least
所以我想我可以用我给定的字符串快速地做一个 re.match() ,但我被卡住了。
使用给定的字符串列表
我想提取到 3 组 H、M 和 S,不知何故
(?: (\\d{1,2})H)?
(?: (\\d{1,2})M)?
(?: (\\d{1,2})S)?
然后我可以轻松地按组(1-3)访问 H、M 和 S 组件。 我只是想限制匹配以实现 creteria,至少必须触发一个 optionl 组,否则它不匹配。 否则,我猜这个表达式可以选择为空并匹配所有内容。
这是示例的链接: https : //regex101.com/r/LKAKbx/5
我怎样才能从比赛中以组的形式获取数字,例如:
时间是12H 3M 12S
组(1)= 12,组(2)= 3,组(3)= 12
或者
12 秒内准备就绪
组(1) = 无,组(2) = 无,组(3) = 12
使用积极的前瞻来确保我们至少有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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.