[英]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.