正则表达式包 re
re.search(pattern, string),其中pattern是字符串形式提供的正则表达式,string是需要匹配的字符串;
使用^和$测试string有pattern完整匹配
>>> re.search('[0123456799]',"2") != None
True
#只要有一个匹配成功,就会返回True
>>> re.search('[0123456799]',"12") != None
True
>>> re.search('[0123456799]',"a2") != None
True
>>> re.search('[0123456799]',"2") != None
True
>>> re.search('[0123456799]',"a") != None
False
>>> re.search('^[0123456799]$',"1a") != None
False
范围表示法
[x-y]表示x到y整个范围内的字符
>>> re.search("^[0-9]$","2") !=None
True
>>> re.search("^[9-0]$","2") !=None
上面的字符会进行报错,因为9比0 的ASCII的值要大
>>> re.search("^[0-9a-fA-F]$","2") !=None
True
>>> re.search("^[0-9a-fA-F]$","c") !=None
True
>>> re.search("^[0-9a-fA-F]$","i") !=None
False
>>> re.search("^[0-9a-fA-F]$","I") !=None
False
也可以通过\xhex表示一个字符,\x表示前缀,hex表示字符对应的码值(十六进制数值),如所有的ASCII字符对应的字符组就是[\x00-\x7F]
>>> re.search("^[\x00-\x7F]$","c") !=None
True
>>> re.search("^[\x00-\x7F]$","1") !=None
True
元字符与转义
元字符包括[、 ]、$、^以及表示范围的-
对于-来说,出现的位置不同,含义不同
>>> re.search("^[-09]$","-") !=None 表示匹配-,0,9
True
>>> re.search("^[0-9]$","-") !=None 表示匹配0到9的数值
False
>>> re.search("^[0\-9]$","3") !=None
False
>>> re.search("^[0\-9]$","-") !=None
True
排除型字符组
[^0-2][0-2] 表示匹配由两个字符组成的字符串,第一个为0-2以外的所有字符(也包括标点符号),第二个为0-2之前的字符,
>>> re.search(r"^[^0-2][0-2]$","Q2") !=None
True
>>> re.search(r"^[^0-2][0-2]$",",2") !=None
True
字符组简记法
\d等价于[0-9],\D等价于[0-9]之外的所有字符,d表示单词字符digit
\w等价于[0-9a-zA-Z],w表示“单词字符(word)”
\s等价于[ \t\r\n\v\f](第一个字符是空格),s表示单词字符space,空白字符
>>> re.search(r"^\d$","8") != None
True
>>> re.search(r"^\d$","9") != None
True
>>> re.search(r"^\w$","9") != None
True
>>> re.search(r"^\w$",",") != None
False
>>> re.search(r"^\w$","a") != None
True
>>> re.search(r"^\s$"," ") != None
True
>>> re.search(r"^[\da-zA-Z]$","8") != None
True
>>> re.search(r"^[\da-zA-Z]$","a") != None
True
>>> re.search(r"^[\da-zA-Z]$","aad") != None
False