一、正则表达式函数 match 这个函数是从头开始匹配且只能从头开始匹配 search 这个函数是可以从任意位置开始匹配
1 2 import restring = "poythonypnyhjptyskphyjsa"
1.match函数
2.全局函数
3.sub函数 1 2 3 result = re.sub(pat,"123" ,string) print (result)
二、正则表达式模式修正符 在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义, 从而实现一些匹配结果的调整等功能
I 匹配的时候忽略大小写
M 多行匹配
L 本地化识别匹配
U 根据unicode字符进行解析
S 让.匹配包括换行符
1 2 3 4 5 6 import restring = "Python" pat = "pyt" result = re.search(pat,string,re.I) print (result)
三、元字符 元字符就是正则表达式中具有一些特殊含义的字符,比如重复N次的前面的字符 常用的元字符有以下几种:
. 匹配除换行符以外的任意一个字符
^ 这个符号如果不在原子表里面,匹配开始的位置 $ 匹配结束位置
代表的是前面的原子重复出现0次,1次或多次 ? 代表的是前面的原子重复出现0次,1次
代表的是前面的原子重复出现1次或多次 {n} 代表的是前面的原子恰好出现n次 {n,} 代表的是前面的原子至少出现n次 {n,m} 代表的是前面的原子至少出现n次,至多出现m次 | 模式选择符或 () 模式单元
1 2 3 4 5 6 7 8 9 import restring = """<a target="_blank" href="https://www.ikwoonleefzorg.nl">""" pat = """<a target="_blank" href="(http.*?)">""" result = re.findall(pat,string) print (result)
四、正则表达式 正则表达式专用模块
1 2 import restring = "woshixiaokeai"
1、普通字符作为原子 1 2 3 4 pat = "keai" result = re. search(pat,string) print (result)
2、非打印字符作为原子 1 2 3 4 5 6 7 (指的是不是输出出来的东西,类似于'\n' (换行符),'\t' (制表符之类的)) string2 = """woshixiaokeai baidu """ pat = '\n' result = re.search(pat,string2) print (result)
3、通用字符作为原子 也就是说用一个字符代替一类东西,只要出现在这一类东西都能匹配出来 常用的有一下几个:
\W 匹配一个任意字母、数字、或者下划线 \w 匹配除了字母数字下划线以外的任意一个字符 \D 匹配任意一个十进制数 \d 除十进制数以外的任意一个字符 \s 匹配除空白字符以外的任意一个字符 \S 匹配空白字符
1 2 3 4 5 string = """woshixiaokeai 7891234hahu hayou""" pat = "\s\w\d\d" result = re.search(pat,string) print (result)string = """woshixiaokeai 7891234hahu hayou"""
4、原子表 1 2 3 4 5 6 像[xyz]这样的,然后从中任意提取一个原子 出来 string = """woshixiaokeai7891234hahuhayou""" pat = "h[abc]you" result = re.search(pat,string) print (result)
五、正则表达式实例讲解 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import restring = "<a href='http://www.baidu.com'>百度首页</a>" pat = "[a-zA-Z]+://[^\s]*[.com|.cn]" rst = re.compile (pat).findall(string) print (rst)string = '<a href="//kailaili.com' pat = "//[^\s]*" rst = re.findall(pat, string) print (rst)string = '</a><a href="http://149.202.171.21:9002" >' pat = '</a><a href="([http|https]+://[^\s]*)' rst = re.findall(pat, string) print (rst)string = "http://149.202.171.21:9002" pat = '[http|https]+://([^\s]*):' pat2 = '[0-9]:([^\s]*)' rst = re.findall(pat, string) rst2 = re.findall(pat2, string) print (rst[0 ],rst2[0 ])string = "http://149.202.171.21:9002" pat = '[http|https]+://([^\s]*)' rst = re.findall(pat, string) print (rst[0 ])