正则表达式 - python

时间:2015-08-23 09:16:50

标签: python regex

我是正则表达式的新手,并开发了这个以找出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"

1 个答案:

答案 0 :(得分:6)

你有更多的错误而不是正确,我害怕。请注意以下事项:

  • 您应该通过相等== 10)而不是身份is 10)来比较整数 - CPython实习生小整数,所以您当前的代码会有效,但这是你不应该依赖的实施细节;
  • 如果您将$(字符串结尾)添加到结尾,则正则表达式只匹配十个字符长的字符串,无论如何都要进行len检查;
  • 引号位于错误的位置,因此您将单个字符串传递给re.match,而不是您想要尝试匹配的模式和名称 - 逗号和idno都是pattern参数的一部分;
  • 'true' != 'True':Python区分大小写,布尔值以大写字母开头;
  • re.match会返回SRE_Match个对象或None,其中== True也不会。但是,即使您只是== TrueTrue,写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]