我有这种模式:^[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