正则表达式
1.又称规则表达式(英语:Regular Expression,在代码中常简写为regex、 regexp或RE),计算机科学的一个概念。 正则表达式通常被用来检索、替换那些符合某 个模式(规则)的文本。
2.是对字符串操作的一种逻辑公式。 用事先定义好的一些特定字符、及这些特定字 符的组合,组成一个“规则字符串”,这个“规则 字符串”用来表达对字符串的一种过滤逻辑。
正则表达式的作用
- 用来检测用户的输入是否满足要求
- 网络爬虫
- 查找数据
表达式 | 功能 |
. | 匹配任意1个字符(除了\n) |
[] | 匹配[]中列举的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即空格,tab键 |
\S | 匹配非空白 |
\w | 匹配单词字符,即a-z,A-Z,0-9 |
\W | 匹配非单词字符 |
例子
#coding=utf-8
import re
result = re.match(r’正则表达式’,要匹配的字符串)
//使用match方法进行匹配操作
result.group()
//如果上一步匹配到,使用group方法提取数据
表达式 | 功能 |
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少有1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
正则表达式语法: “ ^ ”(脱字号)
- 表示以…开始
- 如果把它放在中括号当中,它 表示取反操作
正则表达式语法: “ $ ” 表示以…结尾
正则表达式语法: “ | ” 匹配多个表达式和字符串
贪婪模式和非贪婪模式
匹配分组
表达式 | 功能 |
l | 匹配左右任意一个表达式 |
(ab) | 将括号中字符作为一个分组 |
\num | 引用分组num匹配到的字符串 |
(?P<name .>) | 分组起别名 |
(?P=name) | 引用别名为name分组匹配到的字符串 |
re模块中常用的函数
•search
• match
•findall(pattern,string[, flags]) 列出所有在字符串string 中,与正则表达式pattern匹配的所有匹配项,并返回一个list
注意:“.” 不能够匹配 \n
解决方法:设置findall的参数flag = re.DOTALL
•re.sub(pattern, repl, string, count=0, flags=0)
其中三个必选参数:pattern, repl, string
两个可选参数:count, flags
•split(pattern,string)使用正则表达式来分割字符串,并返回一个list
•compile(pattern[,flags]) 对于一些经常要用到的正则表达式,可以使用compile进 行编译,后期再使用这个正则表达式的时候可以直接拿过来用,执行效率会更快.而且还可以指定compile的第二个参数flags = re.VERBOSE.这样,在写正则表达式的时候可以分行 以及添加注释.