正则表达式
1.基本概念
在一个文本中,快速匹配到想要的内容
2.re模块
1)使用过程
#导入
import re
#使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
如,re.match(r”hello”, “hello world”)
#如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
2)匹配单个字符
. 匹配任意1个字符(除了\n,匹配范围最广
[] 匹配[]内的字符,只能匹配一个字符
\d 匹配数字,0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z,A-Z,0-9,_,也支持中文匹配
\W 匹配非单词字符
3)匹配多个字符
{} 大括号里的内容可以规定前面紧邻的匹配符要匹配内容的位数
\d{1,3} 匹配数字,匹配的数字是1位,2位或3位
\d{11} 匹配一个11位数
规则:
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次
match()函数最后一个参数传入re.S,可以使 . 匹配到\n
4)匹配开头结尾
r”[a-zA-Z_][a-zA-Z0-9_]*$”
正则表达式中最后加入$表示匹配到字符串的最后一位。
正则表达式以 ^ 表示开头,以 $ 表示结尾
匹配163邮箱地址
^[a-zA-Z0-9_]{4,20}@163\.com$
如果在正则表达式中需要用到某些普通的字符,比如点. 或者? 可以使用\来转义
5)分组等
^[a-zA-Z0-9_]{4,20}@(163|126)\.com$
|是或者关系,在需要判断或者关系的地方加上括号
在正则表达式中,用小括号括住正则表达式,group(1)可以返回第一个小括号的值,group(2)可以返回第二个小括号的值。
语法
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串 如,\1 与第一个小括号匹配的内容相同
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
3.re模块高级用法
1)search
直接返回要匹配的字符,只返回第一个匹配的字符串
2)findall
返回匹配到的符合条件的全部字符串
3)sub 将匹配到的数据替换
re.sub(r”\d+”, ‘998’, “python = 997”)
输出结果:’python = 998’
sub满足函数调用
第二个参数是要替换的数据,这个参数可以传入函数
4)split
ret = re.split(r”:| “, “info:xiaoZhang 33 shangdong”)
print(ret)
运行结果:
[‘info’, ‘xiaoZhang’, ‘33’, ‘shangdong’]
以冒号或者空格进行切割