所以我以为我可以用给定的String快速执行re.match(),但是我被卡住了。
具有给定的字符串列表
我想将H,M和S分为3组,
(?:(\ d {1,2})H)?
(?:(\ d {1,2})M)?
(?:(\ d {1,2})S)?
然后,我可以按组(1-3)访问H,M和S组件。我只是想限制匹配以符合条件,即必须触发至少一个optionl组,否则将不匹配。否则,我猜这个表达式可以为空,并且可以匹配所有内容。
这是示例的链接:https : //regex101.com/r/LKAKbx/5
如何仅从匹配项中以组为单位获取数字,例如:
时间是12H 3M 12S
组(1)= 12,组(2)= 3,组(3)= 12
要么
准备在12S
组(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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句