我有這種模式:^[0-2]{0,1}[0-9]:[0-5][0-9]$
。它檢查輸入的字符串是否是時間格式,如01:20
,20:30
等。事情是,我需要檢查輸入的值是否符號正確。因爲如果用戶開始輸入時間並輸入第一個符號,則正則表達式不會自動傳遞,因爲假設1
與該模式不匹配。Python的正則表達式:「喜歡」正則表達式模式?
我的意思是讓說,有人開始進入輸入,如:
1
,然後0
,然後:
。這意味着正則表達式檢查仍然應該通過,因爲用戶正在按順序輸入正確的符號。
但如果他讓說進入:
1
,0
,:
,然後a
,正則表達式應該在點失敗,當他走進a
,因爲被輸入了部分時間是不正確的:10:a
永遠不會匹配那最後的正則表達式。
所以有一種方式與正則表達式匹配在like
方式的模式。通常搜索是如何工作的,如果你輸入了正確的短語,它會發現你的結果。
代碼段正在爲唯一的 「最終」 值:
In [32]: import re
In [33]: p = re.compile(r'^[0-2]{0,1}[0-9]:[0-5][0-9]$')
In [34]: p
Out[34]: re.compile(r'^[0-2]{0,1}[0-9]:[0-5][0-9]$')
In [35]: p.search('01:')
In [36]: p.search('01:10')
Out[36]: <_sre.SRE_Match at 0x7f163153cf38>
另一方面,像'p.search('01')'這樣的部分匹配不能保證輸入字符串指向*時間格式* – RomanPerekhrest
@RomanPerekhrest,只要用戶輸入正確的符號在一個序列中,它的確定。如果他按順序輸入任何不正確的東西,他實際上將不能輸入它,因爲檢查將禁止傳遞該符號。 – Andrius