PAN卡上的Python正则表达式

时间:2019-07-24 12:52:14

标签: python regex python-3.x

我正在从PAN卡中检索PAN号码。当我抓取Pan号时,有时它在少数数字之间有一些空格,例如DWKP K3344E,其中实际的PAN号表达式将是ABCDE1234F。我想考虑一下正则表达式中报废的数字上是否也有空格。

import re
if re.search(r'^([a-z?A-Z?0-9]){5}([a-z?A-Z?0-9]){4}([a-z?A-Z?0-9]){1}?$', 'DWKP K3344E'):
    print("True")
else:
    print("False")

对于上述内容,正则表达式代码也应返回true。为此,只需修改代码中的r'^([a-z?A-Z?0-9]){5}([a-z?A-Z?0-9]){4}([a-z?A-Z?0-9]){1}?$'部分。

谢谢。

1 个答案:

答案 0 :(得分:2)

我建议在使用正则表达式检查字符串之前,从字符串中删除空格(例如,使用re.sub(r'\s+', '', text)以确保所有Unicode空格都消失了)。

此外,您的正则表达式在字符类中包含问号,因此在输入中允许使用这些字符。您必须删除它们。

尝试

if re.search(r'^[a-zA-Z]{5}[0-9]{4}[a-zA-Z]$', re.sub(r'\s+', '', text)):
    # do something

在这里,re.sub(r'\s+', '', text)首先从文本中删除所有可能的空格,然后^[a-zA-Z0-9]{5}[0-9]{4}[a-zA-Z]$确保结果匹配:

  • ^-字符串的开头
  • [a-zA-Z]{5}-五个字母
  • [0-9]{4}-四位数
  • [a-zA-Z]-一封信
  • $-字符串的结尾。

请参见regex demo