内置的re模块

re(正则表达式)

字符匹配:

  普通字符匹配:re.findall("alex","shfalexjaf"),直接查找符合的字符

  元字符:  .  ^ $ * + ? {} [] () |  \

import re
re.findall("alex","asfjsuisjafjxds")  #完全匹配
re.findall("a..x","asfjsuisjafjxds")  #通配符 . 一个点代表一个任意字符,模糊匹配,注意不能匹配\n
re.findall("^a..x","asfjsuisjafjxds") # ^ 只从开头寻找匹配,第一个字符找不到对应的则为空
re.findall("a..x$","asfjsuisjafjxds") # $ 只看末尾是否有匹配的
re.findall("d*","asdddddddddddghiu")  # * 重复多次(0-∞)匹配这个字符,匹配不上返回空
re.findall("alex+","sdfalexxxxxgs")   # + 重复多次(1-∞)匹配
re.findall("alex?","sdfalexxxxxgs")   # ? 只取(0,1)个
#注意 * , +  , ? 这个三个多次匹配的区别,* 可以匹配 0个 ,+ 必须最少匹配1个
# ? 还有一个作用 ,将贪婪匹配变成惰性匹配,惰性匹配,按最少的次数匹配,如“alex*?”这个就只做0次匹配
# 而{}可以自己设置匹配多少次如{2,5}等
re.findall("x[yz]p","sddxypsfxzpd")    #[] 放在这里的字符有一个满足匹配就可以,是一个或的作用
re.findall("x[a*z]","sdxfpfhjxzpfgk")  #在元字符【】中没有特殊字符,这里*不代表匹配多次a
re.findall("x[a-z]","sdxfpfhjxzpfgk")  #【】这个字符集中只有 - ,^ , \ 这三个有正常功能
re.findall("x[a-z]*","sdxfpfhjxzpfgk")
re.findall("x[^a-z]","sdxfpfhjx32gk")  #【】字符集中加上 ^ ,此时这个不在表示开头匹配,而表示非
 
"""
反斜杠后边跟元字符去除特殊功能,比如\.

反斜杠后边跟普通字符实现特殊功能,比如\d
\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  匹配一个特殊字符边界,比如空格 ,&,#等
"""

 

#re模块的方法
re.findall("a","fhajsaja")     #匹配所有符合的内容,并将结果返回到一个列表中
re.search("a","sjasfaska")     #匹配到第一个内容就返回结果,注意这个返回的是一个对象,需要用group()方法调用
re.match("a","askfjl")         #同search,但是匹配开头第一个是否符合
re.split("[ |]","hello abc|def") #分割,可以按照多个字符进行分割
re.split("[ab]","asdabcd")       #按照顺序依次分割,注意当左边不存在字符时分割它会出现空字符
re.sub("\d+","AA","sajf23af22sj")  #替换,需要三个参数,(匹配规则,替换的字符,原字符串)
re.sub("\d","A","ssf23shf45lk2",3) #第四个参数是匹配替换多少次
re.subn("\d","A","ssf23shf45lk2")  #统计匹配替换的次数
res = re.compile("\d")             #编译一个规则,下次可以直接用编译好的规则
res.findall("sfkla23jak1j42lk2")
re.finditer("\d","as23ha24ah5a")    #得到的是一个迭代对象,调用时next().group()

re.findall("www\.(baidu|163)\.com","aswww.baidu.comaf")   #findall()优先给出组内的结果,而不是全部的匹配结果
re.findall("www\.(?:baidu|163)\.com","aswww.baidu.comaf") #在组()内加上?:表示取消优先级

 

posted @ 2019-05-18 12:06  saber゛  Views(236)  Comments(0Edit  收藏  举报