来跟大鱼一起学习正则表达式
正则表达式是什么?
正则表达式(regular expression)是一种强大、便捷、高效的文本处理工具。简单来说,正则表达式是用来按照一定的规则来查找、处理文本的。举个例子,如果想要在一堆文字中找出所有的网址,只要用 \<https?://[^ ][-a-z0-1._]+/[-a-z0-9._]*\.html?\>
就能匹配出大部分网址了。如果用其他方法,是不是挺麻烦的?
为什么要用正则?
从上面那个例子,就已经可以看是正则表达式的强大了。首先,正则表达式是爬虫的基础,未来可能要学爬虫技术,要为以后做好准备;另外,打算做一个消息获取并且去重、提精、推荐,用正则的话会方便很多;再有就是,以后难免会对各种各样的文本进行验证、处理,正则真的是很方便的。
初识正则里的元字符
先列举下正则里的元字符吧,也就相当于其他语言里的关键字。很少,记住应该不难。
元字符 | 说明 | 匹配对象 |
匹配单个字符的元字符 | ||
. | 点号 | 匹配单个字符 |
[ab] | 字符组 | 匹配任意一个字符(本例:a或者b) |
[^ab] | 排除型字符组 | 匹配单个未列出的字符(不可以没有字符)(本例:a和b外的所有单个字符) |
\char | 转义字符 | 若char是元字符,或转义序列无特殊含义时,匹配char对应的普通字符 |
提供计数功能的元字符 | ||
? | 问号 | 匹配最多一次前面最近的字符或者分组(括号括起来的等),可以没有 |
\* | 星号 | 匹配任意次前面最近的字符或者分组(括号括起来的等),可以没有 |
+ | 加号 | 匹配至少一次前面最近的字符或者分组(括号括起来的等) |
{min,max} | 区间量词\* | 匹配min次到max次,其他同上 |
匹配位置的元字符 | ||
^ | 脱字符 | 匹配一行的开头位置 |
$ | 美元符 | 匹配一行的结束位置 |
\< | 单词分界符\* | 匹配单词的开始位置(不仅仅是根据空格判断) |
\> | 单词分界符\* | 匹配单词的结束位置 |
其他元字符 | ||
| | alternation | 匹配分隔的字符或者分组之一,如(first|1st|1 st) |
(…) | 括号 | 限定多选结构的范围,标注量词作用的元素,为反向引用“捕获”文本 |
\n | 反向引用\* | 匹配之前的第n组括号内的子表达式匹配的文本 |
注:\*代表并非所有版本的egrep都支持 |
随便看看就行,不用背的,通过几个例子就容易记住了。
(未完待续)