Python-re正则表达式语法总结(1)和邮箱正则表达式例子
本次我们讲讲re正则表达式。那讲到re正则表达式的话,难免就需要跟其他的解析库做下对比。如下表
lxml库、正则表达式和BeautifulSoup库对比
工具 | 解析速度 | 难度 |
---|---|---|
BeautifulSoup4 | 最慢 | 最简单 |
lxml | 快 | 简单 |
正则表达式 | 最快 | 难 |
大家可以了解一下大概情况。我对这表的理解是,lxml库速度快有部分原因是因为c语言编写的,而BeautifulSoup4库是第三方库,慢也可以理解,毕竟三种方式它的难度是最低的。re正则表达式呢,有多难呢:正则表达式可能你刚写完,出去吃个饭回来,有可能你就要斟酌斟酌自己刚刚为何这样写这式子。。。(雾)
re正则表达式语法总结
表达式 | 语法 |
---|---|
. (点号) | 匹配任意字符(除了换行符\n) |
\d | 匹配任意数字 |
\D | 匹配任意非数字 |
\s | 匹配空白字符(\n,\t,\r,空格) |
\w | 匹配a-z,A-Z,数字和下划线 |
\W | 跟\w相反 |
[] | 匹配括号中满足的字符 |
——————————————分割线——————————————
表达式 | 语法 |
---|---|
* | 表示0或多个 |
+ | 表示1或多个 |
? | 表示1或0个 |
{m} | 匹配m个字符 |
{m,n} | 匹配m~n个字符 |
小例子
实践出真知。总结这么多语法不如实际操作一番。
那么我们来写一个邮箱的正则表达式吧——
我们先顺便写一个邮箱 Test_12580@gmail.com
分析一下邮箱的组成,主要是三块内容。
用百度的总结就是:
登录名@主机名.域名
登录名
登录名的构成是大小写字母、数字和下划线,可能还有 -(横杆)
那结合我们上表的语法,登录名可以写成这样
[a-zA-Z0-9_-]+
[]括号中的字符只要满足就可以匹配,不过有一点要注意,
+号很重要,如果不加
+号,
[a-zA-Z0-9_-]匹配的内容就是一个一个单个的字符。+号表示满足[]内容的有1个或多个,就能将Test_12580整整齐齐的拿下来。
不加+号就会——Test_12580被
[a-zA-Z0-9_-]匹配后是
T
e
s。。。这样一个一个字符。
当然匹配的规则很多样,登录名也可以写成这样[\w-]+
主机名
主机名一般是英文和数字,例如gmail,qq,sina,163
↑(我在思考主机名的时候一直在思索到底有没有带_和-的主机名,我们就认为没有吧,也好更上面的登录名做区分)
要提一点的是:\w表示a-z,A-Z,数字和下划线,那么能不能用在这里呢?
因为我们假设没有自带-和_的主机名,因此我们就不能用**\w**。
那么我们就老实规矩的写一下,
[a-zA-Z0-9]+这个跟登录名的区别就是少了_和-
.域名
不要看少了,我们这一块把域名前面的
.(点号)也加进来算一个整体。当然啦,
.(点号)也可以单独的拿出来还是那句
正则表达式的匹配规则还多样,还少有绝对的表达式
我们直接将.域名的正则表达式贴出来——
(\.[a-zA-Z0-9]+)
这里面有几点需要详细说一下,
.(点号)前面的
\是叫转义字符
我们上面的表格写到
.表示匹配任意的字符(除了换行符),不过,在
.前加上
\,那
\.就不是匹配任意字符,
\.等于
.
还有大家需要看清楚括号的不同,
\.在
[a-zA-Z0-9]+前面就保证了 .com的
.必须位于
com的前面。而且不能将
\.放到
[a-zA-Z0-9]+里面,后果就变成了满足
a-z,
A-Z,
0-9,
\,
., 都会匹配出来。 邮箱的正则表达式成品就是
[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)
看起来很长,但是将每一块内容拆分来写的话,还是比较好对付的。
另外我推荐一个网址,大家可以去里面自己尝试写一下正则表达式,例如匹配qq号或电话号码之类的
知识点补充
在上文我们讲到了转义字符
\,
\.表示
.,实则还有其他方法防止字符转义。
例如我们需要匹配的字符串中出现了’\n’ ,那我们不想让\n转义成换行符的话,我们可以在字符串前加
r——'r’是防止字符转义的。
↑在用re正则表达式爬虫的时候,
r的用法很常用也很实用。
总结
好像没什么总结,我们下次再会~
- 正则表达式总结 re (python演示)
- python中最常用的re正则表达式总结
- python正则表达式re模块语法
- Python基础教程之正则表达式基本语法以及re模块
- python re正则表达式总结 常用的
- python高级语法-系统标准库中re(正则表达式)的使用
- 【正则表达式】python re模块用法总结
- python re 正则表达式总结 匹配指定字符
- Python正则表达式和re库知识点总结
- Python正则表达式re模块简明笔记
- python中的正则表达式(re模块)
- Python正则表达式中的re.S的作用
- Python正则表达式中的re.S
- python正则表达式re模块详细介绍
- Python re(正则表达式)简明教程
- Python基础--正则表达式基本语法以及re模块
- Java 正则表达式学习总结和一些小例子
- re模块(Python中的正则表达式)
- Java 正则表达式学习总结和一些小例子
- python基础-RE正则表达式