首页 > 其他 > 详细

re模块2

时间:2020-03-04 21:04:08      阅读:66      评论:0      收藏:0      [点我收藏+]

\d  匹配任何十进制数;它相当于类[0-9]

\D  匹配任何非数字字符;它相当于类[^0-9]

\s   匹配任何空白字符;它相当于类[\t\n\r\f\v]

\S  匹配任何非空白字符;它相当于类[^\t\n\r\f\v]

\w   匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]

\W   匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]

\b    匹配一个特殊字符边界,比如空格,&,#等

raw strings  原生字符串     强制字符串不转译   例如:

1 import re
2 
3 a = re.findall(ri\b, hello i an list)
4 print(a)
5 输出:
6 [i]
1 import re
2 
3 # a = re.findall(r‘i\b‘, ‘hello i an list‘)
4 a = re.findall(i\\b, hello i an list)
5 print(a)
6 输出:
7 [i]
1 import re
2 
3 a = re.findall(c\\\\l,c\l)
4 print(a)
5 输出:
6 [c\\l]

|   管道符或者的意思

1 import re
2 a = re.findall(ka|b,kakdfkjbkdf)
3 print(a)
4 输出:
5 [ka, b]

search()   只会找第一个满足的对象  使用group()  取出找到的结果

1 import re
2 a = re.search(\d+,45sdf56we4dsfsd2e)  # 返回一个对象
3 print(a.group())
4 输出:
5 45

分组  例如   通过?P<str>   获取组

 1 import re
 2 
 3 a = re.findall((?P<name>[a-zA-Z]+)(?P<age>\d+), dfgs45sdf56we4dsfsd2e)  # 返回一个对象
 4 print(a)
 5 输出:
 6 [(dfgs, 45), (sdf, 56), (we, 4), (dsfsd, 2)]
 7 
 8 import re
 9 
10 a = re.findall([a-zA-Z]+\d+, dfgs45sdf56we4dsfsd2e)  # 返回一个对象
11 print(a)
12 输出:
13 [dfgs45, sdf56, we4, dsfsd2]

match()   和search() 一样  只不过从开头开始匹配  例如:

 1 import re
 2 
 3 a = re.findall([a-zA-Z]+\d+, dfgs45sdf56we4dsfsd2e)  
 4 print(a)
 5 输出:
 6 [dfgs45, sdf56, we4, dsfsd2]
 7 import re
 8 
 9 a = re.match(\d+, dfgs45sdf56we4dsfsd2e)  # 返回一个对象
10 print(a)
11 输出:
12 None

re.split()   分割函数

1 import re
2 a = re.split([ab],asdaji)
3 print(a)
4 输出:
5 [‘‘, sd, ji]

re.sub()  替换功能

1 import re
2 b = re.sub(\d+,A,ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67)
3 print(b)
4 输出:
5 ksdfjkAfsdjhfAeAdsfAdsfAdsAdsfA
1 import re
2 b = re.sub(\d,A,ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67,4)
3 print(b)
4 输出:
5 ksdfjkAAfsdjhfAeAdsf76dsf656ds75dsf67

限定次数

1 import re
2 b = re.subn(\d,A,ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67)
3 print(b)
4 输出:
5 (ksdfjkAAfsdjhfAeAdsfAAdsfAAAdsAAdsfAA, 13)
1 import re
2 com = re.compile(\d+)
3 b = com.findall(skdfj8sd7f6dsf768)
4 print(b)
5 输出:
6 [8, 7, 6, 768]

使用compile进行编译,传入对象,以后就直接调用字符串进行寻找。

使用finditer()  可以将结果变为一个可迭代对象,随用随取。  例如:

 1 import re
 2 b = re.finditer(\d,sdhf78wejhdsf678ew6d5f7)
 3 print(b)
 4 print(next(b).group())
 5 print(next(b).group())
 6 print(next(b).group())
 7 print(next(b).group())
 8 输出:
 9 <callable_iterator object at 0x00612E08>
10 7
11 8
12 6
13 7

去优先级,防止匹配成功后只出现括号里面的内容。    例如:

1 import re
2 # b = re.findall(‘www\.(baidu|163)\.com‘,‘www.baidu.com‘)
3 b = re.findall(www\.(?:baidu|163)\.com,www.baidu.com)
4 print(b)
5 输出:
6 [www.baidu.com]

 

re模块2

原文:https://www.cnblogs.com/ch2020/p/12412050.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!