正则表达式
正则表达式
- RE:regular expression 或 regex
1.概念
正则表达式的作用
- 通用的字符串表达框架
- 简洁 表达一组字符串的表达式
- 针对字符串表达 简洁 和 特征 思想的工具
- 判断某字符串的特征归属
- 表达文本类型的特征(病毒、入侵等)
正则表达式的使用
- 编译:将符合正则表达式语法的字符串转换成正则表达式特征
正则表达式的语法:由字符和操作符构成
正则表达式的常用操作符
正则表达式语法实例
经典正则表达式实例
2.Re库的基本使用
正则表达式的表示类型
- raw string 类型(原生字符串类型)
原生字符串类型在字符串类型前加小写的 ‘ r ’。(转义符 ‘\’)
- string 类型,更繁琐
当正则表达式包含转义符时,使用raw string
Re库主要功能函数
Re库的等价用法
- 编译后的优势:一次编译,可以多次操作。
- 编译后的对象可以调用上述六个主要功能函数。
Re库主要功能函数的示例
import re
#search
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
print("search: ",match.group(0))
#match
match = re.match(r'[1-9]\d{5}', '100081 BIT')
if match:
print("match: ",match.group(0))
#findall
ls = re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print("findall: ",ls)
#split
ls2 = re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit= 1)
print("split: ",ls2)
#finditer
for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
if m:
print("finditer: ",m.group(0))
#sub
ls3 = re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
print("sub: ",ls3)
输出结果:
search: 100081
match: 100081
findall: ['100081', '100084']
split: ['BIT', ' TSU100084']
finditer: 100081
finditer: 100084
sub: BIT:zipcode TSU:zipcode
Re库的Match对象
-
Match对象的属性
-
Match对象的方法
- Match对象示例
import re
#search
m = re.search(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(type(m))
print(m.string)
print(m.re)
print(m.pos, m.endpos)
print(m.group(0))
print(m.start(), m.end(), m.span())
输出结果:
<class 're.Match'>
BIT100081 TSU100084
re.compile('[1-9]\\d{5}')
0 19
100081
3 9 (3, 9)
Re库的贪婪匹配和最小匹配
- 贪婪匹配
- 最小匹配(后面添加 “?”)