爬虫工程师基础,正则表达式基本语法

正则表达式基本语法

正则表达式(regular expression)是一种字符串匹配模式或者规则,它可以用来检索、替换那些符合特定规则的文本。正则表达式几乎适用于所有编程语言,无论是前端语言
JavaScript,还是诸如许多后端语言,比如 Python、Java、C# 等,这些语言都提供了相应的函数、模块来支持正则表达式,比如
Python 的 re 模块就提供了正则表达式的常用方法。

在使用 Python 编写爬虫的过程中,re 模块通常做为一种解析方法来使用。通过审查网页元素来获取网页的大体结构,然后使用解析模块来提取你想要的网页信息,最终实现数据的抓取。

正则表达式元字符

元字符

.	匹配除换行符以外的任意字符
\w	匹配所有普通字符(数字、字母或下划线)
\s	匹配任意的空白符
\d	匹配数字
\n	匹配一个换行符
\t	匹配一个制表符
\b	匹配一个单词的结尾
^	匹配字符串的开始位置
$	匹配字符串的结尾位置
\W	匹配非字母或数字或下划线
\D	匹配非数字
\S	匹配非空白符
a|b	匹配字符 a 或字符 b
()	正则表达式分组所用符号,匹配括号内的表达式,表示一个组。
[...]	匹配字符组中的字符
[^...]	匹配除了字符组中字符的所有字符

量词

量词

*	重复零次或者更多次
+	重复一次或者更多次
?	重复0次或者一次
{n}	重复n次
{n,}	重复n次或者更多次
{n,m}	重复n到m次

字符组

[0123456789]		在一个字符组里枚举所有字符,字符组里的任意一个字符
和"待匹配字符"相同都视为可以匹配。
[0123456789]		由于字符组中没有 "a" 字符,所以不能匹配。
[0-9]		也可以用-表示范围,[0-9] 就和 [0123456789] 是一个意思。
[a-z]		同样的如果要匹配所有的小写字母,直接用 [a-z] 就可以表示。
[A-Z]		[A-Z] 就表示所有的大写字母。
[0-9a-fA-F]	 可以匹配数字,大小写形式的 a~f,用来验证十六进制字符。

贪婪模式非贪婪模式

正则表达式默认为贪婪匹配,也就是尽可能多的向后匹配字符,比如 {n,m} 表示匹配前面的内容出现 n 到 m 次(n 小于 m),在贪婪模式下,首先以匹配 m 次为目标,而在非贪婪模式是尽可能少的向后匹配内容,也就是说匹配 n 次即可

贪婪模式转换为非贪婪模式的方法很简单,在元字符后添加“?”即可实现

非贪婪模式
元字符(贪婪模式)	 非贪婪模式
*	             *?
+	             +?
?	             ??
{n,m}	       {n,m}

正则表达式转义

如果使用正则表达式匹配特殊字符时,则需要在字符前加\表示转意。

* + ? ^ $ [] () {} | \

你可能感兴趣的:(爬虫,正则表达式)