正则表达式: \d 匹配一个数字 \w 匹配一个字母或者数字 \s 匹配一个空格 . 匹配任意字符 * 匹配任意个数字符,包括0个 ?匹配0个或1个字符 + 匹配至少一个字符 {n} 匹配n个字符 {n,m} 匹配n到m个字符 特殊字符要用'\'转义 例子:\d{3}\s+\d{3,8} 表示匹配 010 45613278 456 78945612 ... \d{3}\-\d{3,8} 表示匹配 010-12345678 []表示范围 {2}表示重复次数 {0,9}0-9次 可以匹配一个数字字母或者下划线 [0-9a-zA-Z\_] 可以匹配至少由一个数字字母或者下划线组成的字符串 [0-9a-zA-Z\_] 可以匹配由字母或下划线开头,后接任意个(可以为0)由一个数字、字母或者下划线组成的字符串 [a-zA-Z\_][0-9a-zA-Z\_]* 在上面的基础上添加字数限制即20个字符 [a-zA-Z\_][0-9a-zA-Z\_]{0,19} A|B匹配A或B ^表示行的开头 表示出了abc之外 [^abc] $表示行的结束 re模块 import re 表示判断正则表达式是否匹配,匹配成功则返回一个match对象,否则返回None re.match(r'\d{3}\d{3,8}$','010-12345') 切分字符串 'a b c'.split(' ') 加上正则表达式可以识别连续空格 'a b c'.split(r'\s+','a b c') 也可以分割逗号 re.split(r'[\s\,]+','a,b,c d') 也可以识别分号 re.split(r'[\s\,\;]+',b;; c d') 用group提取字串: m = re.match(r'^(\d{3})-(\d{3,8})$','010-12345') m.group(0) '010-12345' m.group(1) '010' m.group(2) '12345' 在提取的结果之中,group(0)永远表示提取的元字符串,之后的group(1)...表示字串 贪婪匹配,即默认情况下匹配尽可能多的字符,下例中\d+即贪婪模式 re.match(r'^(\d+)(0*)$','102300').groups() ('102300','') 非贪婪匹配,后面加? re.match(r'^(\d+?)(0*)$','102300').groups() ('1023','00') 使用编译后的正则表达式对象来提高速率 import re # 编译 re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$') # 使用: re_telephone.match('010-12345').groups() ('010','12345') re_telephone.match('010-8086').groups() ('010','8086') 第二个参数表示大小写都可以 re_csvt = re.compile(r'csvt',re.I) findall ,search ,match的区别 比如 str = ’cabcabc abc' import re a = r'cabcabc abc' re.match(a,str) 结果为none match match 尝试从字符串的起始位置匹配一个模式,匹配成功则返回对象,否则返回none match.group()返回匹配对象 re.findall(a,str) 结果为['abc','abc','abc'] 扫描整个字符串把所有符合的结果以列表的形式呈现出来 re.finditer返回一个迭代器对象 保留反斜杠字符: re.findall(r'csvt.net',s,re.S) re.search(a,str) 结果为: <_sre.SRE_Match object at 0x0086FA30> >>> p = re.search(a,'cabcabc abc') >>> p.group(0) 'abc' 扫描整个字符串并返回第一个成功的匹配的对象,否则为none 匹配以下email地址: someone@gmail.com bill.gates@microsoft.com r'^(\w+\.?\w+)@(\w+\.\w+)$' ?表示重复前面\w\.0次或者1次,即可有可无 替换方法sub rs = r'c..t' rs.sub(rs,'python','csvt cdgt cmyt cccc') >>>'python pyhton python cccc' 显示替换次数 rs.subn(rs,'csvt cdgt cmyt cccc',3) >>>'python pyhton python cccc' 对于多行字符串 re.findall(r,re.M) 对于多行的正则 re.findall(r,re.X) 括号分组,优先返回括号里的值 r1 = r"hello src=(.+) yes"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。