python正则表达式
是一个特殊字符序列,帮助检查一个字符串是否匹配你的要求;字母和数字也可以当作一个表达式
郑子表达式要配合着re模块使用,re模块是内置模块
1. 正则表达式模式
^ 匹配的是字符串的开头,使用方式:^world;
$匹配的是字符串的结尾,使用方式:world$;
^world$,即匹配字符串world;
.匹配的是除了换行符符之外的任意字符;
[…]用来匹配一组字符,例如[a,b,c]可以匹配abc中的任意一个;
[…]用来匹配不在[]中的字符;表示非的意思;
*匹配0/多个表达式,与其他符号一起使用,如.*值得就是匹配0个任意字符或者多个任意字符;
+和*类似,匹配1个/多个表达式;
{整数}表示匹配n次表达式,如:x{2}表示匹配两次x;
{n,m}表示匹配n~m次表达式;
a|b匹配a或者b字符;
\w匹配字母数字及下划线;
\W(大写)匹配字母数字及下划线之外的字符;
(表达式)对表达式进行分组,即将表达式分隔开;
\s匹配任意空字符;
\S匹配任意非空字符;
\d匹配任意数字如:[0-9];
\D匹配任意非数字;
\A匹配字符串的开始;
2.re模块的使用
python中使用正则表达式
1.re.match(正则表达式,匹配字符).span()查询匹配到的字符串的索引
注意只能用来匹配字符串的开头,如果不是其起始位置返回none
print(re.match('www','www.baidu.com').span())
结果显示:
2.re.match(正则表达式,匹配字符).span()则是用来搜索直到匹配位置,没找到报错
3.re.sub(re,repl,string,count)用来替换字符串中的匹配项
re:正则匹配的模式,repl:被替换成什么字符,string:被替换的字符串,count:模式匹配后替换的最大次数,默认0表示所有;
phone = '123-456-789#123456789'
num=re.sub('#.*$', 'x', phone)
s=re.sub('\D','123',phone)
4.re.compile()
用来生成正则表达式对象,供match和search之类的函数使用就不需要写第一个参数了;之后还可以指定从哪个位置开始索引
p=re.complie('\d+')
p.match('xxx11',3,10)#一段范围内进行检索
5.findall()找到所有的匹配并返回一个列表
使用多个模式匹配,返回的是列表,元素是元组
x = re.findall('\d+', phone)
print(x)
s = re.findall('(\w)=(\d+)', '123=123 and 456=456')
print(s)
d+‘, phone)
print(x)
s = re.findall(’(\w)=(\d+)', ‘123=123 and 456=456’)
print(s)