正则表达式

import re

re.findall('xx','xxxx')

re.search('xx','xxx').group() 只匹配一个

re.match('xx','xxx') 起始位置匹配

?非贪婪匹配

元字符    .     ^ $       * + ?{}    []       \

. 通配符

 

^ 在字符串开头

$ 在字符串结尾

 

* 匹配0次到多次

+ 1到多次

?0到1次

{} 固定次数,可一个参数或2个区间参数

 

[] 字符集 或者的意思[a-z],如果[^1-9]非数字,^是 非 的意思

 

\ 去除特殊功能;跟普通字符实现特殊功能;引用序号所在的字组所匹配的字符串  

  \d 数字

  \w 数字和字母

  \s 空格

  \b \babc\b 匹配字符和特殊字符的位置 

 

第三个参数标志位

re.I 对大小写不敏感

re.S

re.sub(原来,新的,字符串) 替换

xx = re.compile(规则)

xx.findall(text)

xx.split(text)

 

re.findall('www.(baidu|laonanhai).com','sfdagdg www.baidu.com') ==>baidu

re.findall('www.(?:baidu|laonanhai).com','sfdagdg www.baidu.com') ==>www.baidu.com

1 import re
2 
3 origin = 'hello ,adklfkl ndngdngkn englkng 139i24 dgnkl '
4 r = re.match('(?P<n1>h)(?P<n2>\w+)',origin)
5 print(r.groupdict()) #获取模型中匹配到的分组中所有执行了Key的组,变成字典 {'n1': 'h', 'n2': 'ello'}
6 print(r.group()) #获取匹配到的所有结果 hello
7 print(r.groups()) # 获取模型中匹配到的分组的结果 ('h', 'ello')

 flags

  • re.I(IGNORECASE)忽略大小写,括号内是完整的写法
  • re.M(MULTILINE)多行模式,改变^$的行为
  • re.S(DOTALL)点可以匹配任意字符,包括换行符
  • re.L(LOCALE)做本地化识别的匹配,不推荐使用
  • re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
  • re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
oringin = 'sfbdfjkbdkf21342gdsdjgndjgbkj556435ssjf5413515djkfb'
hehi,count = re.subn('\d+','KKK',oringin)
print(hehi,count)
#sfbdfjkbdkfKKKgdsdjgndjgbkjKKKssjfKKKdjkfb 3
posted @ 2017-02-16 08:36  Erick-LONG  阅读(201)  评论(0编辑  收藏  举报