在学习Python来做一个爬虫时,是一定要知道正则表达式的,今天我就把学到的关于正则表达式的知识分享给大家,希望可以对你们有所帮助
一般字符 匹配自身
. 匹配任意除换行符以外的字符
\ 转义字符,使后一个字符改变原来的意思
[] 字符集,对应的位置可以是字符集中任意字符 ^表示取反,意思是除过这些字符之外的其他字符
\d 匹配数字0-9
\D 匹配非数字
\s 空白字符 [<空格>\t\r\n\f\v]
\S 非空白字符[^\s]
\w 单词字符[a-z A-Z 0-9]
\W 非单词字符[^\w]
* 匹配前一个字符0或无限次
+ 匹配前一个字符1次或无限次
? 匹配前一个字符0次或一次
{m} 匹配前一个字符m次
{m,n} 匹配前一个字符m-n次 ,若省略m,则匹配0-n次,若省略n,匹配m到无限次
*?+???{m,n}? 使*+?{m,n}变成非贪婪模式
^ 匹配字符串开头,在多行模式匹配每一行的开头
$ 匹配字符串末尾,在多行模式匹配每一行的末尾
\A 仅匹配字符串开头
\Z 仅匹配字符串末尾
/b 匹配\w和\W之间
/B [^/b]
| 代码左右表达式任意匹配一个,总是先尝试左边的表达式,一旦匹配成功则跳过匹配右边的表达式,如果|没有被包括在()中,范围就是整个正则表达式
(...) 被括起来的表达式将作为分组,从表达式左边开始每遇到一个分组的左括号'(',编号加1,另外,分组表达式作为一个整体,可以后接数量词,表达式中的|仅在改组有效')
(?P...) 分组,除了原来的编号外再指定一个额外的别名
\ 引用编号为的分组匹配到的字符串
(?P = name) 引用别名的分组匹配到的字符串
(?:...) (...)的不分组版本,用于使用|或后接数量词
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头,可选多个
(?#...) #后的内容将作为注释被忽略
(?!...) 之后的表达式内容需要不匹配表达式才能成功匹配
(?<=...) 之前的字符串需要匹配表达式才能成功匹配
(?...) 之前的字符串内容需要不匹配表达式才能成功匹配
(?(id/name)yes-pattern|no-pattern) 如果编号为id/别名为name的组匹配到字符,则需要匹配yes-pattern,否则需要匹配no-pattern |no-pattern 可以省略
注:
这个是很基本的一些正则表达式知识,但是做一个简单的爬虫完全够用了,后面我还会把具体的使用细节写成博客分享给大家的,谢谢阅读。