码迷,mamicode.com
首页 > 编程语言 > 详细

python模块之re模块

时间:2018-06-23 22:57:35      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:表达   aaaaa   aaa   sdk   sds   ash   不成功   实现   开头   

 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  匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
12 # \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
13 # \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
14 # \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
15 # \b  匹配一个特殊字符边界,比如空格 ,&,#等
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\b","hello,I am hero I am OK")    # 注意转义符号
27 print(c)
28 
29 # \\ 转移符号的使用 要理解一下,因为 正则表达式里面转义后需要经过python解释器再转义一遍
30 # 方式一:
31 n = re.search(r\\c,asdasd\cf)
32 print(n.group())
33 # 方式二:
34 v = re.search(\\\\c,asdasd\cf)
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模块

标签:表达   aaaaa   aaa   sdk   sds   ash   不成功   实现   开头   

原文地址:https://www.cnblogs.com/neilyoung22/p/9218262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!