主要用于网页爬虫

正则表达式对象

re.RegexObject

re.compile() 返回 RegexObject 对象。

re.MatchObject

  • start() 返回匹配开始的位置
  • end() 返回匹配结束的位置
  • span() 返回一个元组包含匹配 (开始,结束) 的位置
  • group() 返回被 RE 匹配的字符串。
  • .string 返回要匹配的字符串

符号说明

  • ():用于创建一个捕获组
    • 可以用来对一个子模式进行分组,以便后续可以对这个组内的内容进行匹配或提取,如(six|four)th匹配的是sixth或fourth,不加小括号,就是匹配six或fourh;
    • 可以用于指定一组模式中的选择项。例如 (a|b) 表示匹配 a 或 b。
  • []:用于创建一个字符集
    • 可以指定一个字符集中允许的字符,例如 [abc] 表示匹配字符 a、b、c 中的任意一个。
    • 可以使用范围表示,比如 [0-9] 表示匹配任意一个数字字符。
    • 可以指定字符集的取反,用 ^,例如 [^abc] 表示匹配除了 a、b、c 之外的任意字符。
  • {}:用于指定匹配重复次数。
    • 可以用来指定一个模式重复出现的次数,比如 {3} 表示匹配 3 次,{2,4} 表示匹配 2 到 4 次。
    • 可以指定具体的次数,也可以指定范围。
    • 一般与 *、+、? 等修饰符一起使用,用来控制重复匹配的次数。

匹配

基础匹配

由于模式字符串中有大量的反斜杠和特殊字符,建议加r,如r’\b\w*\b’

import re
#简单python匹配
pattern1="cat"
pattern2="bird"
strting = "a cat"
print(pattern1 in string)
print(pattern2 in string)
#正则寻找配对
pattern1="cat"
pattern2="bird"
strting = "a cat"
print(re.search(pattern1,string))
print(re.search(pattern2,string))

特殊种类匹配

#匹配run or ran
ptn = "r[au]n"#没有r只是普通的表达式
ptn = r"r[au]n"#有r表示是一个表达式
ptn2 = r"r[0-9a-z]n"#中间的数可能是0-9的数字或者a-z的小写
print(re.search(ptn,'a cat runs'))

#数字 
\d:所有数字形式
print(re.search(r"r\dn",'a cat r4ns'))
\D:不是数字的形式
print(re.search(r"r\Dn",'a cat runs'))

#空白
\s:任意空白符的键\t \n \r \f \v
print(re.search(r"r\sn",'r\nn r4ns'))
\S:不是空白符的形式
print(re.search(r"r\Sn",'r\nn r4ns'))

#所有汉字、字母、数字、“_”
\w:a-z 0-9 _
print(re.search(r"r\wn",'r\nn r4ns'))
\W:相反意义
print(re.search(r"r\Wn",'r\nn r4ns'))

#空白字符
\b:字符的前后空白符才匹配
print(re.search(r"\bruns\b",'dog runs to cat'))
print(re.search(r"\bruns\b",'dog  runs  to cat'))
\B:字符前后的空白符不限量
print(re.search(r"\B runs \B",'dog     runs      to cat'))

#特殊字符 任意字符
\\:匹配\
print(re.search(r"runs\\",'dog runs\ to cat'))
.:匹配任意字符,除了\n
03-26 09:35