初学正则表达式
Python从1.5版本后增加了re模块,re模块包含了处理正则表达式的函数。
这些函数一般使用一个模式字符串作为第一个参数。
可以先看菜鸟教程30分钟入门正则表达式
再看python3正则表达式
下面记录一下常用方法。
re.match()函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
语法:re.match(pattern, string, flags=0)
image.png
可以看到,如果成功匹配会返回一个SRE_Match对象,这个对象有两个属性,span和match。
span返回的是一个含有两个元素的元组,分别是成功匹配的字符串的其实索引和结束索引。
match中的值是模式字符串的值,就是re.match()函数的第一个参数pattern。
当我们匹配"com"时,返回了None,可以发现,不是其实位置开始的匹配,就算包含也是返回None的。重点是起始匹配,也就是从第一个字符就要匹配。
算了,直接写几个例子,留着以后用(或者改进)
1、匹配手机号码
已知条件:手机号是11位的,头3位由移动,联通,电信规定,后8位0-9
前2位有,13,14,15,17,18
phone_reg = "^1[3-5,7-8]\d{9}$"
还有一个复杂版的,但是比我这个全面多了。引用出处在这里
phone_reg2 = "134[0-8]\d{7}$|13[4]\d{8}$|14[5-9]\d{8}$|15[4]\d{8}$|16[6]\d{8}$|17[0-8]\d{8}$|^18[\d]"
"{9}$|^19[8,9]\d{8}$"
2、匹配邮箱
规则是:以一个或者多个任意字符开始,然后是@,然后是一个或者多个字符,再是.com
email_reg = "^\w+@([a-zA-Z0-9])+.com$"