第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方法会把正则表达式的匹配结果进行分类,并将结果以元组的形式返回——解决办法:让子组不捕获内容
代码一直没办法用,不知道怎么改