第60讲:一只爬虫的自我修养8——正则表达式

一 search方法:

1 模块级别的search方法:re.search(pattern,string,flags=0)

  • pattern : 正则中的模式字符串。
  • string : 要被查找替换的原始字符串。
  • flags : 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

2 编译后的正则表达式模式对象也拥有search方法:regex.search(string[,pos[,endpos]])

  • string: 要被查找替换的原始字符串。
  • pos:表示需要搜素的起始位置
  • endpos:表示需要搜索的结束位置

注意:search方法并不会立刻返回你可以使用的字符串取而代之,而是返回一个匹配对象

3 匹配对象有一些方法,使用方法才可以获得一些你需要的字符串

  • group()方法:如果正则表达式中存在子组,那么会将匹配的内容进行捕获;通过在group中设置序号,可以提取到对应的子组捕获的字符串
     1 >>> import re
     2 >>> result = re.search(r" (w+) (w+)","I love FishC.com!")
     3 >>> result
     4 <re.Match object; span=(1, 12), match=' love FishC'>
     5 >>> result.group()
     6 ' love FishC'
     7 >>> result.group(1)
     8 'love'
     9 >>> result.group(2)
    10 'FishC'
    11 >>> result.group(3)
    12 Traceback (most recent call last):
    13   File "<stdin>", line 1, in <module>
    14 IndexError: no such group
    • w表示匹配任意字符,+号表示匹配一次或者多次
  • start()方法:匹配的开始位置
  • end()方法:匹配的结束位置
  • span()方法:表示范围
    • 1 >>> result.start()
      2 1
      3 >>> result.end()
      4 12
      5 >>> result.span()
      6 (1, 12)

 二 findall方法

1 功能:

正则表达式里面没有子组:找到所有匹配的内容,并把他们组织成列表的形式返回

正则表达式里面有子组:findall方法会把正则表达式的匹配结果进行分类,并将结果以元组的形式返回——解决办法:让子组不捕获内容

代码一直没办法用,不知道怎么改

原文地址:https://www.cnblogs.com/luoxun/p/13961653.html