Python爬虫实战基础篇(1)正则表达式

在学习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 可以省略

1.2数量词的贪婪模式和非贪婪模式

  • 正则表达式通常用于在文本中查找匹配的字符串,Python里数量词默认是贪婪的,总是长沙市匹配尽可能多的字符,非贪婪刚好相反,总是尝试匹配尽可能少的字符

关于反斜杠

  • 在Python中,也是使用\作为转义字符,这个时候如果你要去匹配文本中的字符\,那么使用编程语言表示的正则表达式则需要4个\,这样是不太麻烦了?那么使用Python里面的原生字符串可以解决掉这个问题。可以使用r\表示\,同样匹配一个数字也可以这样 r\d,这样写出来的表达式更加直观而且会减少出错几率

注:
这个是很基本的一些正则表达式知识,但是做一个简单的爬虫完全够用了,后面我还会把具体的使用细节写成博客分享给大家的,谢谢阅读。

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