正则表达式语法

正则表达式语法

摘自如何入门 Python 爬虫? - 知乎用户的回答 - 知乎

常用符号

  • . 匹配任意字符,换行符\n除外, 类似一个占位符
  • * 匹配前一个字符0次或无限次
  • ? 匹配前一个字符0次或1次
  • + 匹配前一个字符1次或无限次
  • .* 贪心算法,能找到多少是多少
  • .*? 非贪心算法
  • \d 匹配数字
  • [abc] abc任意一个
  • {m,n} 匹配前一个字符m到n次
  • | 匹配 左右任意一个
  • (.*?) 输出符合条件的,将()里结果返回

常用方法

  • findall:匹配所有符合规律的内容,返回包含结果的列表;
  • 第一个参数是pattern,第二个是查找范围
  • re.S作为findall的第三个参数,让 . 匹配\n
  • 以列表返回将所有的结果
content = re.findall(r'<td valign="top">(.*?)</a>', html, re.S)
  • search:匹配并提取第一个符合规律的内容,返回一个正表达式对象
  • group(1)表示取出()里面的
url = re.search(r'<a href="(.*?)">', each, re.S).group(1)
  • sub:替换符合规律的内容,返回替换后的值
  • 第一个参数是pattern,第二个参数替换的值,第三个是替换变量
test_str = re.sub(u'美元|人民币|元|本金|代理|的', '', test_str)

图片来源:如何入门 Python 爬虫? - 知乎用户的回答 - 知乎

/images/re_hd.jpg