概念
正则表达式:
regular expression regex RE
正则表达式是用来简洁表达一组字符串的表达式
- 通用的字符串表达框架
- 简洁表达一组字符串的表达式
- 针对字符串表达“简洁”和“特征”思想的工具
- 判断某字符串的特征归属
正则表达式在文本处理中十分常用
- 表达文本类型的特征(病毒、入侵等)
- 同时查找或替换一组字符串
- 匹配字符串的全部或部分
正则表达式的使用
- 编译:将符合正则表达式语法的字符串转换成正则式表达特征
正则表达式的语法
- 正则表达式语法由字符和操作符构成
正则表达式的常用操作符
操作符 | 说明 | 实例 |
---|---|---|
. |
表示任何单个字符
| |
[] |
字符集,对单个字符给出取值范围
|
[abc]
表示
a
、
b
、
c
,
[az]
表示
a
到
z
单个字符
|
[^] |
非字符集,对单个字符给出排除范围
|
[^abc]
表示非
a
或
b
或
c
的单个字符
|
* |
前一个字符
0
次或无限次扩展
|
abc*
表示
ab
、
abc
、
abcc
、
abccc
等
|
+ |
前一个字符
1
次或无限次扩展
|
abc+
表示
abc
、
abcc
、
abccc
等
|
? |
前一个字符
0
次或
1
次扩展
|
abc
?表示
ab
、
abc
|
| | 左右表达式任意一个 |
abc|def
表示
abc
、
def
|
{m} |
扩展前一个字符
m
次
|
ab{2}c
表示
abbc
|
{m,n} |
扩展前一个字符
m
至
n
次(含
n
)
|
ab{1,2}c
表示
abc
、
abbc
|
^ |
匹配字符串开头
|
^abc
表示
abc
且在一个字符串的开头
|
$
|
匹配字符串结尾
| abc$ 表示abc且在一个字符串的结尾 |
() |
分组标记,内部只能使用
|
操作符
|
(abc)
表示
abc
,
(abc|def)
表示
abc
、
def
|
\d
|
数字,等价于
[09]
| |
\w
|
单词字符,等价于
[AZaz09_]
|
Re库的基本使用
Re库介绍:Re库是Python的标准库,主要用于字符串匹配
正则表达式的表示类型
- raw string类型(原生字符串类型)
- string 类型,更繁琐,要转义
Re库的主要功能函数
函数 | 说明 |
re.search() | 在一个字符串中搜索匹配正则表达式中的第一个位置,返回match对象 |
re.match() | 在一个字符串的开始位置匹配正则表达式,返回match对象 |
re.findall() | 搜索字符串,以列表类型返回全部能匹配的子串 |
re.split() | 在一个字符串按照正则表达式匹配结果进行分割。返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
Re
库的
match
对象
match对象就是一次匹配的结果,包含了匹配的相关信息
属性 | 说明 |
.string |
待匹配的文本
|
.re
|
匹配时使用的
pattern
对象(正则表达式)
|
.pos
|
正则表达式搜索文本的开始位置
|
.endpos
| 正则表达式搜索文本的结束位置 |
方法 | 说明 |
.group(0)
|
获得一次匹配后的字符串
|
.start()
|
匹配字符串在原始字符串的开始位置
|
.end()
|
匹配字符串在原始字符串的结束位置
|
.span()
|
返回
(
.
start(),
.
end())
|
Re
库的贪婪匹配和最小匹配
Re库默认采用贪婪匹配,即输出匹配最长的子串
最小匹配:如何输出最短的字串?
操作符 | 说明 |
*? |
前一个字符
0
次或无限次扩展,最小匹配
|
+? |
前一个字符
1
次或无限次扩展,最小匹配
|
?? | 前一个字符0次或1次扩展,最小匹配 |
{m,n}> |
扩展前一个字符
m
至
n
次(含
n
),最小匹配
|