Python基础16模块-re模块

1.正则表达式

#^表示在字符串开头匹配,$表示在字符串结尾匹配
#*匹配0到无穷多个
#+匹配1到无穷多个
#?匹配0或者1个
#{}定义匹配个数{0,}==*,{1,}==+,{0,1}==?,{6}=={1,6}
#上面的元字符一般都是贪婪匹配,在后面加上?变成惰性匹配
#[]匹配括号里的字符,只匹配一次,^表示不包含,-表示范围,\表示转义字符,其他在中括号里都无特殊意义
#\d 匹配任何十进制的数
#\D 匹配任何非数字字符
#\s 匹配任何空白字符
#\S 匹配任何非空白字符 
#\w 匹配任何字母数字字符
#\W 匹配任何非字母数字字符
#\b 匹配一个特殊边界字符,比如空格,#,&
#?:去匹配优先级
import re
ret = re.findall("www\.(baidu|163)\.com","www.baidu.com")
print(ret)
ret = re.findall("www\.(?:baidu|163)\.com","www.baidu.com")
print(ret)
#结果为:['123', '564']
#注:类似\b由于在python解释器上会默认转化,这样传到re解释器上就会有差异,所以在re模块下应该变为\\b或者用r'\b'

2.re模块的方法

#search()匹配一个就返回,返回一个对象,如果匹配不到就不返回,用group()方法调用,如果正则表达式用分组形式如(?p<name>[a-z]+)则可用group(name)取出对应分组匹配的内容
#match()从开头开始匹配,匹配一个就返回,返回一个对象,同样用group()调用
#findall()所有符合正则表达式的都匹配,返回一个列表
#split()用正则表达式匹配的字符串进行分割,如re.split("[ab]","abc")结果为[" "," ","c"]先按照a分割再对结果按照b分割
#compile()绑定正则表达式
import re
com = re.compile("\d+")
print(com.findall("fjsdf123eewfwe564sdf"))
#结果为:['123', '564']                            
#finditer()所有符合正则表达式的都匹配,返回一个迭代器
import re
ret = re.finditer("\d","sdf145dfsdf5456")
print(next(ret).group())
print(next(ret).group())
#结果为1
#     4
#sub()将正则表达式匹配的字符串替换成指定字符串如:re.sub("\d","A","a12f")结果为"aAAf",默认为全部替换,也可指定替换次数,如:re.sub("\d","A","a12f",1)表示只匹配一次,结果为"aA2f"
#subn()跟sub()功能一样,返回的是一个元组,包含结果跟匹配的次数

  

猜你喜欢

转载自www.cnblogs.com/josie930813/p/9816320.html