1-正则表达式
正则表达式(Regular Expression):用于一种语法格式简洁表达一组字符串。正则表达式在处理文本中非常有用,识别病毒,字符串匹配等等。
2-正则表达式常用操作符。
操作符 | 作用 |
---|---|
. | 用于表示一个任意的字符 |
[ ] | 表示一个在范围内的任意字符,例如[a-z]表示a-z的任意一个字符 |
[^] | 表示一个不在范围内的任意字符 |
* | 前一个字符0次或者无限次扩展,例如abc *表示ab或者abc或者abcc等等 |
+ | 前一个字符1次或者无限次扩展 |
? | 前一个字符0次或者1次扩展 |
| | 或 |
{m} | 表示扩展前一个字符(包括前一个)m次,例如ab{3}c表示abbbc |
{m,n} | 表示扩展前一个字符m到n次 |
^ | 表示字符串的开头,例如,^abc 表示为abc且是一个字符串的开头 |
$ | 表示字符串的结尾,例如 abc$ |
( ) | 分组标记,内部只能使用 | 符号,例如(abc | def) |
\d | 表示数字0-9 |
\w | 表示符号A-Z,a-z,0-9 |
3-经典正则表达式
表示由26个字母组成的任意字符串,^和$表示字符串的首尾匹配,表明这个是用来表示匹配字符串
^[A-Za-z]+$
表示由26个字母和数字组成的任意字符串
^[A-Za-z0-9]+$
表示整数形式的字符串
^-?\d+$
使用了UTF-8编码表示中文字符
[\u4e00-\u9fa5]
4-Python标准库re库
功能函数 | 函数参数 | 函数作用 |
---|---|---|
re.search() | pattern,string,flag=0 | 搜索待匹配字符串中第一个匹配的字符串 |
re.match() | pattern,string,flag=0 | 从待匹配的字符串的头开始匹配第一个匹配的字符串 |
re.findall() | pattern,string,flag=0 | 搜索字符串,以列表类型返回全部符合条件的子串 |
re.split() | pattern,string,maxsplit=0,flag=0 | 字符串匹配并分割 |
re.finditer() | pattern,string,flag=0 | 迭代匹配所有子串 |
re.sub() | pattern,repl,string,count=0,flag=0 | 将匹配到的字符串替换成指定字符串 |
参数解释:
pattern表示正则表达式的字符串
string待匹配的字符串
flag控制标记,默认0,可选控制标记有:
- re.I 忽略大小写匹配
- re.M ^操作符是表示从字符串的开头开始匹配,使用了re.M的标记之后可以从每行的字符串开头开始匹配
- re.S .操作符默认匹配除换行符外的所有字符,使用该标记后,也适用于换行符。
maxsplit通俗的理解就是从字符串首部开始匹配出maxsplit个pattern,然后将匹配的这几个挖掉,原字符串就变成maxsplit+1份了。
repl用于替换匹配到的子串
count表示替换的最大个数,默认为0表示全部替换
5-re库使用技巧
5-1-调用两种方法:
简单调用
s = re.match(r'\d+','123abc')
面向对象调用
s = re.compile(r'\d+')
m = s.match('123abc')
5-2-匹配原则
贪婪匹配,匹配第一个符合条件且最长的字符串
ss = re.search(r'p.*y','psyxxy')
输出结果ss.group(0) = ‘psyxxy’
最小匹配,匹配第一个符合条件切最短的字符串
ss = re.search(r'p.*?y','psyxxy')
输出结果ss.group(0) = ‘psy’
**通过添加?操作符进行最小匹配和贪婪匹配切换