前言
还记得我第一份工作,是做数据采集、数据处理,其中数据采集的工作就是利用爬虫去爬取 相关网站的一些特殊字段,爬虫需要用「正则表达式」来对我想采集的 "特殊的字段" 进行匹配,匹配成功,则将该字段存储到本地的数据库,然后接着轮询。
现在还是挺想念第一家公司的...
好了,今天先把正则表达式的一些特殊的规则先列举一下吧
正则的规则
正因为想要对 ”一些特殊的字段“ 进行匹配,然后加以利用,所以就有了「正则表达式的概念」,比如我们通常使用 /w 匹配一个字母或数字,使用 /d 匹配一个数字,等等很多,现在一一列举一下。
-
.
(点) : 任意字符 -
/w
: 一个字母或者数字 -
/d
: 一个数字 -
/s
: 一个空格 -
[a-z]
: 一个小写字母 -
[A-Z]
: 一个大写字母 -
[a-zA-Z]
: 一个字母 -
[0-9]
: 一个数字,同 /d -
/-
: 中划线 -
/_
: 下划线 -
//
: 斜杠 - 其他特殊符号需要通过 / 使之成为转义字符
以上都是单个符号,字母,数字,怎么体现n个呢
-
+
:表示0个或者多个 -
?
: 表示0个或者1一个 -
*
: 表示0个或者多个,即任意个 -
{n}
: 表示指定个数个,比如 {2} 表示两个 -
{n,m}
:表示n个到m个,比如{2-5} 表示可以有2,3,4,5个
或者关系
-
|
:比如b|B
就表示 b 或者 B
行的开头
-
^
: 如果使用了行的开头,那么其实就是限定了开头的规则,比如^\d
就表示 开头必须是一个数字
行的结尾
-
$
: 如果使用了行的结尾,那么就是规定了结尾的规则,比如\_$
就表结尾必须是下划线
ok ,大致规则就是这样喽,那么下面我们先来看几个复杂的「正则表达式」来练练手
练练手
题目:\d{3}\s+\d{3,8}
答:3个数字 至少一个空格 3-8位的数字
比如 012 1234
这样的数字就是匹配的。
几个常用的正则表达式
-
[0-9a-zA-Z\_]
可以匹配任意一个字符,数字或者一个下划线 -
[0-9a-zA-Z\_]+
可以匹配至少由一个字符,数字,或者下划线组成的字符串 -
[0-9a-zA-Z\_][0-9a-zA-Z]*\
可以匹配由一个字符、数字或者下划线开头,后边任意个由字母、数字、下划线组成的字符串,也就是python合法的变量命名
总结
正则表达式很简单,只需要记得上面列举的那些特殊字符即可,是不是很简单,赶快写一个手机号码的正则吧~~