来跟大鱼一起学习正则表达式
正则表达式是什么?
正则表达式(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都支持 | ||
随便看看就行,不用背的,通过几个例子就容易记住了。
(未完待续)