从来就没有救世主  也不靠神仙皇帝  要创造人类的幸福  全靠我们自己  

python 正则

import re

 

1. 正则的常用方法

(1)匹配

re.match(pattern,string,flags=0)

  pattern:正则表达式

  string:要匹配的字符串

  flags:标志(是否区分大小写、是否多行匹配等)

re.l  大小写不敏感
re.L
re.M  多行匹配,影响 ^  $
re.S  . 会匹配包括换行在内的所有字符
re.U  根据Unicode字符集解析字符,会影响 \w \W \b \B
re.X

 

  match返回的匹配对象的方法:

group(num=0)  #0表示整个分组,或者返回第num个分组所匹配的字符串
groups()      #返回一个含分组字符串的元组

 

 

 

(2)查找

re.search(regex,str)

 

 

(3)替换

re.sub(pattern,repl,string,count=0,flags=0)

  repl:用来替换string中匹配项的字符串,也可为一个函数

  count:替换的次数

(4)findall

    search() 只会返回一个Match对象,其包含查找字符串第一次匹配的文本;如果要获取字符串中所有匹配的文本,用findall(),其返回一个包含所有匹配结果字符串的列表 

 

2. 正则对象

  为了使一个正则可重复使用,通过compile方法得到一个正则对象

re1 = re.compile(patteern.flags)
re1.match('xxxxx')

     flags参数:

         re.DOTALL     .* 将匹配包括换行符的所有字符,无此参数就不匹配换行符

         re.I 或 re.IGNORECASE   匹配时忽略大小写

         re.VERBOSE   忽略中间有注释的表达式的注释

    match返回一个Match对象,常用方法如下:

group(num=0) 
start(num=0) #分组匹配的子串在整个字符串中的起始位置
end(num=0)   #分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引加1)
span(num)    #返回 (start(num),end(num))

 

 

3. 模式

(1)括号分组

        正则表达式中,一个括号对应一个分组,可通过 group() 入参指定取哪个分组

           group(0)、group()  返回整个匹配的文本

           groups()   返回所有分组的元组

import re

regStr = r'(\d{3})(-\d{4})(-\d{4})'
regObj = re.compile(regStr)
str = 'asdas123-4567-9990asdafa5'
match = regObj.search(str)
print(match.group())     #123-4567-9990
print(match.group(0))    #123
print(match.group(1))    #123
print(match.group(2))    #-4567
print(match.group(3))    #-9990
print(match.groups())    #('123','-4567','-9990')

 

(2)

      | 表示或

      ?  0次或1次

      *  0次或多次

      +  至少一次

(3)贪心和非贪心匹配

    默认贪心匹配

    例:  G{3,5}  表示匹配字符'G' 3到5次,默认尽可能多的匹配

    greedyMatch = re.compile(r'(G){3,6}')
    match = greedyMatch.search('1GGGGGG2')
    print(match.group())  #GGGGGG

    noneGreedyMatch = re.compile(r'(G){3,6}?')
    match = noneGreedyMatch.search('1GGGGGG2')
    print(match.group())  #GGG

 

 4. 字符分类

    \d     同 [0-9]

    \D    同 [^0-9]

    \w    同 [a-zA-Z0-9_]

    \W   同 [^a-zA-Z0-9_]

    \s     空格、制表符、换行符(空白字符)

    \S     除空格、制表符、换行符之外的任何字符

 

 

 

 

 

 

 

 

   

 

posted @ 2020-07-28 21:31  T,X  阅读(152)  评论(0编辑  收藏  举报