1. 普通字符作为原子:import re str = 'leadingme' path = 'me' res = re.search(path,str)
2. 非打印字符作为原子:\n换行符, \t制表符等
3. 通用字符作为原子:\w 字母,数字,下划线 、\W 除字母,数字,下划线字符、\d 十进制数、\D 除十进制数数字、
\s 空白字符、\S 除空白字符的字符
4. 原子表:[]表示从[]中选择出一个原子(优先选第1个) [xyz]从x y z中选出一个, [^xyz] 除了x y z
举例: string='abc1234567jkl' pat = '\w\d\d\d' res = re.search(pat,string) print(res) -> c123
. 匹配除换行符外任意一个字符
^ 匹配开始位置
$ 匹配结束位置
* 匹配前面元素0\1\多次
? 匹配前面元素0\1次
+ 匹配前面元素1\多次
{n} 匹配前面元素恰好n次
{n,} 匹配前面元素至少n次
{n,m} 匹配前面元素至少n次至多m次
a|b 模式选择符(选择两个其中一个)
() 匹配单元符(只匹配出括号中的内容)
[0-9] 一个任意数字
I: 匹配时忽略大小写 *
M: 多行匹配 *
L: 本地化识别匹配
U: unicode解析
S: 配包括换行符 *
举例:string - 'Python' pat = 'pyt' res = re.search(pat,string,re.I)
举例:
string = ‘poythonyhgjdo’
pat1 = ‘p.’ – poythony 贪婪模式
pat2 = 'p.?’ – poy 懒惰模式,精准
正则表达式函数有re.match(pat,string)函数,re.search(pat,string,re.模式)函数,全局匹配函数,
re.sub()函数 替换 ret = c.sub(‘被替换内容’,‘替换为内容’, 替换总内容)
match函数,与search函数唯一的区别它是从头开始匹配
全局匹配函数,格式: re.compile(pat).findall(string), 能匹配多个满足正则表达式的结果
string = “百度首页”
pat = ‘[a-zA-Z]+://[^\s]*[.cn|.com]’
res = re.compile(pat).findall(string)
print(res) ==> [‘htpp://www.baidu.com’]
string = ‘dafsdgs021-5342624634gsdkhflkadfsda0773-42379021bmdaljgs’
pat = “\d{4}-\d{7}|\d{3}-\d{8}”
res = re.compile(pat).findall(string)
print(res) ==> [‘021-53426246’, ‘0773-4237902’]