Email 正则表达式
正则表达式 用户输入
正则表达式中 \d
匹配一个数字
\w
匹配一个数字或者字母
可以匹配的任意字符:
*
:任意个字符
+
:表示至少一个字符
?
:0或者1个字符
{n}
:表示n个字符
{n,m}
:表示n-m个字符
例:\d{3}\S+\d{3,8}
(1)表示匹配3个数字
(2)\s 可以匹配一个空格
\s+:至少有一个空格:“ ”
(3)\d{3,8} 表示3-8个数字
(4)’-‘字符,用’\’转义
进阶
[]表示范围
[0-9a-zA-Z\_]
可以匹配一个数字,字母,下划线
[0-9a-zA-Z\_] +
匹配至少一个数字,字母,下划线组成的
[a-2A-Z\_][0-9a-zA-Z\_] *
字母或下划线开头一个数字,字母或者下划线组成字符串
[a-2A-Z\_][0-9a-zA-Z\_]{0,19}
变量长度1-20字符
A|B
例: (P|p)ython
^
:行的开头
^\d
:数字开头
$
:行的结束
\d $
:必须以数字结束
^py$
整行匹配
re模块: S = 'ABC\\-001'
S = r'ABC\001'
import re
re.match(r'^\d{3}\-\d{3,8}$','010-12345')
match 是否匹配
匹配成功:Match对象 失败 None
切分字符串
用正则表达式切分字符比用固定灵活
正常切分代码
‘a b c'.split('')
re.split(r'\s+','a b c')
re.split(r'[\s\,]+','a,b,c,d')
re.split(r'[\s\,\;]+','a b;;cd')
正则表达式把不规则的输入转换为正确的数组。
分组
正则表达式提取子串的强大功能,用()表示的就是提取的分组Group
^(\d{3})-(\d{3,8})$
例:
m = re.match(r’^(\d{3})-(\d{3.8})$);’010-12345’
group方法,完成相应的提取
group(0)永远是原始的字符串
贪婪匹配:正则匹配默认为贪婪匹配,尽量多匹配
re.match (r’^(\d+)(0*)$’,’102300’).groups()
\d+
贪婪匹配
0*
匹配空字符串
\d+
采用非贪婪匹配
加个?就可以让\d+采用非贪婪匹配。
re.match(r'^(\d+?))(0*)$','102300').groups()
re模块