正则表达式
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中默认使用该flagre.X(VERBOSE)
冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
oringin = 'sfbdfjkbdkf21342gdsdjgndjgbkj556435ssjf5413515djkfb'
hehi,count = re.subn('\d+','KKK',oringin)
print(hehi,count)
#sfbdfjkbdkfKKKgdsdjgndjgbkjKKKssjfKKKdjkfb 3