python中的正则表达式。输出不正确

时间:2015-07-13 18:43:45

标签: python regex

我想检查字符串是否以数字开头,然后有9个字母数字字符。但是,这会返回yes而不是no。为什么呢?

import re

if re.search(r'[0-9][0-9]{9}','92211sssff222'):
    print "yes"
else:
    print "no"

2 个答案:

答案 0 :(得分:1)

字母数字范围应该类似于[A-Za-z0-9]。此外,由于您希望字符串以 start 使用此格式,请将^(字符串的开头)符号与其完全匹配,否则将使用' !!!92211sssff222'之类的字符串也匹配。

固定代码:

import re

if re.search(r'^[0-9][A-Za-z0-9]{9}','92211sssff222'):
    print "yes"
else:
    print "no"

答案 1 :(得分:1)

它应该是这样的。既然你说它应该开始你必须使用指定开始的上限符号^

根据您的正则表达式,您将匹配十个连续数字,这可能发生在字符串

中的任何位置
import re

if re.search(r'^[0-9][a-zA-Z0-9]{9}','9sssssssff222'):
    print ("yes")
else:
    print ("no")

yes