day18常用模块之re模块

简单认识正则表达式

元字符,单个字符匹配

    .         匹配除换行符以外的任意字符
    \w         匹配字母数字下划线(word)
    \s        匹配任意空白符    (space)
    \d        匹配数字        (digit)
    
    大写则为非
    \W      非字母数字下划线            [\W\w] [\S\s] [\D\d] 可匹配全局
    \S      非空白
    \D      非数字

    \n        匹配换行符
    \t         匹配制表符

    \b        匹配结尾        hello\b

    ^        匹配开头
    $        匹配结尾

    a|b          a或者b
    [^..]     除去哪些不匹配

量词的使用
    
    *         匹配0次或多次
    +         匹配1次或多次 
    ?        匹配0次或1次
    {n}        匹配n次
    {n,}    匹配n次或更多次
    {n,m}    匹配n到m次
    在量词后面加?为惰性匹配

分组:
    ()         需要将几个约束集中在一起约束

re模块常用方法

import re
# findall
# search
# match

ret = re.findall('[a-d]','hello world')     # 前面放匹配规则,后面放匹配字符串
print(ret)

ret = re.search('a','abc bca')              # 只匹配到第一个后就返回,调用group()方法得到结果。
if ret: print(ret.group())                           # 匹配不到返回None,调用group() 会报错

ret = re.match('ev','eva egon yuan')
if ret: print(ret.group())                   # 只从整串字符串开头匹配,中间的匹配不到。同样需要group()方法

# split

ret = re.split('[ab]','abcd')               # 先按a分割,再按b分割 ['','bcd'] 
print(ret)

['', '', 'cd'] # sub ret
= re.sub('\d','H','ads4vdef3vve2',1) # 将数字替换成 H,1 表示 只替换1处 print(ret)
ret
= re.subn('\d','H','ads4vdef3vve2') # 将数字替换成 H,返回元祖以及替换次数 print(ret) # compile obj = re.compile('\d{3}') # 将正则表达式编译成一个 正则表达式对象。 ret = obj.search('abc123eee') print(ret.group()) # finditer ret = re.finditer('\d','sa2dv3vf4btf5bg678')  # finditer() 返回一个迭代器,同样需要用group()方法 print(ret) # <callable_iterator object at 0x000001BABCB10208>   for i in ret: print(i.group())

猜你喜欢

转载自www.cnblogs.com/jiuyachun/p/10531830.html