鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

正则表达式(1)---初识正则与元字符

来跟大鱼一起学习正则表达式

正则表达式是什么?

正则表达式(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都支持

随便看看就行,不用背的,通过几个例子就容易记住了。

(未完待续)