python编程基础之三十八
正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
-
-
缺点:效率低下,能用字符串方法完成尽量使用字符串的方法
-
优点:编码简单
原子 含义
\d 0-9中的任意一个字符
\D 排除0-9
\s \t,\n,\r,空格等字符中的一个
\S 排除\s
\w 数字字母下划线
\W 排除\w
[] 自定义的原子表
[^] 排除自定义的原子表
^ 行首,
¥ 行尾
. 表示出\n以外的任何字符,
\b 词边界
\B 非词边界
\A 字符串首
\Z 字符串结尾
- 表示域,一个范围,比如1-9,1到9中的任意一个
-----------------------------------------------
元字符 含义
{} 表示重复原子次数
{m} 表示重复原子m次
{m,n} 表示重复原子最少m次,最多n次
{m,} 表示重复原子最少m次,无上限
() 改变优先级,取子元素
* 连续出现重复至少0次,意思出没出现没关系,但是存在贪婪性,
+ 至少出现一次,存在贪婪性
? 出现0次或1次
*?,+? 取消贪婪
| 或
----------------------------------------------------------------------
模式修正符
修饰符 含义
re.S 使 . 匹配所有字符
re.L 本地识别化
re.U 根据Unicode字符解析字符吗,会影响\b,\B,\w,\W
re.l 不区分大小写
re.M 多行匹配
------------------------------------------------------------------------
-
-
严格区分大小写
-
如果正则表达式中有{,},[,],-,?,*,|^,$,.等做普通字符,则要将其转义
正则常用的函数方法
re.match()字符串开头开始匹配,只匹配开头
re.search()从开始开始匹配,但是不限于只匹配开头,中间的也行
re.findall()找出所有符合规则的并以列表的形式返回
re.split()根据模式拆分
re.sub,re.subn:在目标字符串中以正则表达式的规则匹配字符串,再把他们替换成指定的字符串。可以指定替换的次数,
如果 不指定,替换所有的匹配字符串
前者返回一个替换后的字符串,后者返回一个元组,第一个元素替换后的字符串
re.group()和re.groups():用于提取子元素,模式中一个括号就是一个子元素,group和groups只能在match和search方法里使用,
通过返回的match object获取子元素。在模式串和sub和subn中的替换字符串中可以使用\1,\2,\3....来引用子元素
compile():就是把规则存储起来,不需要多次解释,提高运行速度