python模块之re模块

Posted neilyoung22

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python模块之re模块相关的知识,希望对你有一定的参考价值。

 1 # 正则表达式是用来匹配字符串的方法
 2 # 字符串本身就有匹配方式,为什么要引入正则表达式? 因为原有的字符串匹配不出来原始的方法
 3 # 正则匹配是用来进行模糊匹配的
 4 
 5 s = "alex want to drink"
 6 print(s.split(" ")) # 以恐吓
 7 print(s.find("a"))  # -1
 8 
 9 
10 import re
11 # 。 模糊匹配一个字符或者数字或者空格,但是不能匹配换行符号
12 # ^  行首匹配
13 # $  结尾匹配
14 # *  匹配前面0到多个字符 注意:0也是一个  0就是没有也会返回一个空字符
15 # +  匹配前面1到多个字符
16 # ? 匹配前面0到1次的字符 前面的字符可能没有,或只有一个
17 # {} 指定匹配的次数范围 {5}或者{1,5}前面的字符匹配5次 ‘aaaaaab‘ 这样的字符也是可以取到的
18 #    (默认是贪婪匹配 ,按照最多的来,或者按照最少的来)
19 
20 # findall() 方法  完全匹配hello 返回列表
21 pp = re.findall("h...o","asdadasdashelloasdasdasd")
22 pp2 = re.findall("^h...o","asdadasdashelloasdasdasd")   #匹配不成功
23 pp3 = re.findall("h*","asdashehllohhhhhhasdas")   #匹配不成功 [‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘h‘, ‘‘, ‘h‘, ‘‘, ‘‘, ‘‘, ‘hhhhhh‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘, ‘‘]
24 print(pp3)
 1 import re
 2 #二元字符
 3 # [ ] 字符集 匹配给定范围的一个元素 里面是或的关系
 4 # [ ] 取消元字符的特殊功能 比如* 就就被当成了普通字符 x 而不匹配多个字符了 但是 ^   - 这些字符例外!
 5 # [^ ] ^在[ ]中是取反的意思!
 6 # [^4,5] 这里的意思是除了4或和除了5的
 7 #  后面跟元字符会取消其特殊功能,但是后面跟着普通的个别字符可以实现特殊功能 w 表示一个字母
 8 # 如下所示:
 9 # d  匹配任何十进制数;它相当于类 [0-9]。
10 # D 匹配任何非数字字符;它相当于类 [^0-9]。
11 # s  匹配任何空白字符;它相当于类 [ 	

fv]。
12 # S 匹配任何非空白字符;它相当于类 [^ 	

fv]。
13 # w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
14 # W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
15 #   匹配一个特殊字符边界,比如空格 ,&,#等
16 # \ 特殊字符 正则表达方式中的转义符号\ 会经过python的解释器,那么python解释器需要再解释一遍就是\\变成4个字符
17 
18 # () 括号内的规则作为一个整体去匹配的
19 # | 管道符号 或 的意思
20 
21 #方法二: x=re.search() 找到一个就返回,返回的是个对象 获取这个对象的值的话 f.group() 获取找到的值
22 
23 a=re.findall(a[b,v]c,abc)
24 a=re.findall([a,z],abc)     # 这样子会返回3个结果 分别是a b c
25 print(a)
26 c = re.findall(r"I","hello,I am hero I am OK")    # 注意转义符号
27 print(c)
28 
29 # \ 转移符号的使用 要理解一下,因为 正则表达式里面转义后需要经过python解释器再转义一遍
30 # 方式一:
31 n = re.search(r\c,asdasdcf)
32 print(n.group())
33 # 方式二:
34 v = re.search(\\c,asdasdcf)
35 print(v.group())
36 
37 #()与| 的方式使用
38 #()与| 的方式使用 升级版 复杂版 见下面示例 正则与根据组名取值
39 print(re.search("(as)|3","as3").group())      #as  注意 只有一个值
40 # 高级版
41 # <> 是正则表达式中的固定格式
42 ret=re.search((?P<id>d{2})/(?P<name>w{3}),23/com)
43 print(ret.group())#23/com
44 print(ret.group(id))#23
 1 # 正则表达式的方法
 2 
 3 re.findall()
 4 re.search().group()
 5 re.match()              #只在字符串开始匹配  匹配成功返回一个对象,匹配不成功返回none 也只返回一个对象
 6 re.split()              #重点在这里  如意犯错误
 7 re.sub()                #相当于replace替换 很好用的方法
 8 re.compile()            #将规则编译成一个对象去调用,节省代码的使用量
 9 
10 
11 # 这个先按照k进行分组,然后在按照s对k的分组再次进行分组 [‘a‘, ‘d‘, ‘dl‘, ‘op‘]
12 print(re.split([k,s],asdkdlsop))
13 # 注意容易犯错的地方 s 在分割的开头的话会有个空字符被分割出来
14 print(re.split([k,s],sasdkdlsop))
15 print(re.sub(a..x,s..b,asdalexppm))       #asds..bppm
16 
17 #re.compile() 的使用
18 
19 pp=re.compile(/.com)
20 ret=pp.findall(asdadd.com)
21 print(ret)

 

以上是关于python模块之re模块的主要内容,如果未能解决你的问题,请参考以下文章

python常用模块之re模块(正则)

Python 基础之re 模块

常用模块之re模块以及正则表达式扩展

Python 入门之 内置模块 -- re模块

Python之re模块

python常用模块之——正则re模块