1. 正则表达式基础 1)行定位符 ^ 表示行开始,$ 表示行的结尾 例子: ^tm 匹配tm equal Tomorrow Moon 2)元字符 3)限定符 4)字符类:再方括号中列出,如[aiou] 5)排除字符,如[^a-zA-Z],方括号中使用^表示排除的意思 6)选择字符 例子:匹配身份证的表达式:(^\d{15}$)|(^\d{18}$)|((^\d{17})(\d|x|X)) 匹配15位数字,或者18位数字,或者 17位数字和最后一位,最后一位可以是数字或x或X 7)转义字符 例子:匹配类似127.0.0.1格式的IP地址 [1-9]{1,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{1,3} 8)分组 使用小括号可以分组,如:(\.[0-9]{1,3}){3} 2. 使用re表达式实现正则表达式匹配 re模块在使用前,应先导入:import re a. 匹配字符串:match()方法、search()方法、findall()等方法 match()方法,语法格式:re.match(pattern,string,[flags]) pattern:模式字符串 string:要匹配的字符串 flags:可选参数,表示标志位,控制匹配方式,如是否区分字母大小写 例子: import re 输出结果: <re.Match object; span=(0, 7), match='MR_SHOP'> 获取匹配值的起始位置使用Match对象的start()方法,获取匹配值的结束位置使用end()方法,通过span()方法返回位置的元组,通过string属性可以获取要匹配的字符串 search():在整个字符串搜索第一个匹配的值,匹配成功,返回Match对象,否则None 语法格式:re.search(pattern, string, [flags]) 例子: import re 输出结果: <re.Match object; span=(0, 7), match='MR_SHOP'> findall():在整个字符串中搜索所有符合正则表达式的字符串,并以 列表的形式返回。匹配成功,返回列表,否则返回空列表。 语法格式:re.findall(pattern, string, [flags]) 例子: import re 输出结果: ['MR_SHOP', 'mr_shop'] b. 替换字符串:sub()方法 语法格式:re.sub(pattern, repl, string, count, flags) 例子: import re 输出结果: 中奖号码: 84978981 联系电话: 1XXXXXXXXXX c. 分割字符串:split()方法 语法格式:re.split(pattern, string, [maxsplit], [flags]) 例子: import re 输出结果: ['http://www./login.jsp', 'username='mr'', 'pwd='mrsoft''] |
|