我是正则表达式的新手,并开发了这个以找出idno在前九个字符中的值是0到9,还是V,v,X或x作为最后一个。语法是否正确,因为它发送请求两个args的错误。 另一个问题是它应该只有10个字符长。我使用了一个单独的代码来验证它,但是我也可以将它集成到这个中吗?
if len(idno) is 10:
if re.match("[0-9]{9}[VvXx],idno") == true:
print "Valid"
答案 0 :(得分:6)
你有更多的错误而不是正确,我害怕。请注意以下事项:
== 10
)而不是身份(is 10
)来比较整数 - CPython实习生小整数,所以您当前的代码会有效,但这是你不应该依赖的实施细节; $
(字符串结尾)添加到结尾,则正则表达式只匹配十个字符长的字符串,无论如何都要进行len
检查; re.match
,而不是您想要尝试匹配的模式和名称 - 逗号和idno
都是pattern
参数的一部分; 'true' != 'True'
:Python区分大小写,布尔值以大写字母开头; re.match
会返回SRE_Match
个对象或None
,其中== True
也不会。但是,即使您只是== True
或True
,写False
也很尴尬,您可以使用Match
是真实和{{{{ 1}}是假写y更整洁None
而不是if some_thing:
;和if some_thing == True:
的案例,您只需使用[0-9]
( d igit)。因此,您的代码应为:
\d
您可以使用if re.match(r'\d{9}[VvXx]$', idno):
# ^ note 'raw' string, to avoid escaping the backslash
print "Valid"
标记进一步简化并为最后一个字符re.IGNORECASE
创建组。几个例子:
[vx]