概念:
Regular Expression
一种文本模式,描述在搜索文本时要匹配的一个或者多个字符串
典型场景:
数据验证、文本扫描、文本提取、文本替换、文本分割
语法
字面值:
- 普通字符
- 转义字符 \ ^ $ | . * + - () [] {}等
元字符
匹配
单字,预定义元字符
- .除\n外的所有字符
- \d 数字,等同于[0-9]
- \D 非数字,等同于[^0-9]
- \s 空白字符, \t \n \r \f \v
- \S 非空白字符,[^\t \n \r \f \v]
量词(字符,元字符,字符集)
如何重复
- ? 0次或1次
- * 0或多次
- + 1或多次
特定
- {} :{3,5}:出现的次数在3-5之间
- {n},只能匹配出现n次,特定次数
- {n,}:匹配至少出现n次
- {,m}:最多出现m次, 有上限和下限的匹配
贪婪与非贪婪
贪婪模式(默认的):尽量匹配最大的范围结果
非贪婪模式:尽量匹配最小的结果,方法:就是在量词后面追加一个? 问号
边界匹配
- ^ :行首
- $ :行尾
- \b:单词边界
- \B:非单词边界
- \A:输入开头
- \Z:输入结尾
- 注:或因上下文差异有不同表现
Python中的正则
模块import re
RegexObject(正则对象)
- .findall : 查找所有非重叠匹配项 返回list
- .match(string[,pos[,endpos]]) :进一步完善匹配的数据的细节。仅从起始位置开始匹配。返回的是MathObject
- .search(string[,pos[,endpos]]) :他是从任意位置就行搜索 ,返回的是MathObiect
- .finditer() : 查询所有的匹配项,但是返回的是包括MatchObject元素的迭代器。当for循环遍历的时候,就会出现详细的信息