Python 爬虫之正则表达式

1.正则表达式

正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。

2.正则表达式的相关解释

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(abc)。
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab
c)。
默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
一般倾向使用非贪婪模式。

3.Python re模块配合正则使用

常用的功能函数包括:compile、search、match、split、findall(finditer)、sub(subs)
函数原型如下:

pattern = re.compile(string[,flag])  
re.match(pattern, string[, flags])
re.search(pattern, string[, flags])
re.split(pattern, string[, maxsplit])
re.findall(pattern, string[, flags])
re.finditer(pattern, string[, flags])
re.sub(pattern, repl, string[, count])
re.subn(pattern, repl, string[, count])

示例:

import re

pattern = re.compile(r'abc')

result1 = re.match(pattern,'abc')
result2 = re.match(pattern,'abc CQC')
result3 = re.match(pattern,'ab CQC')
result4 = re.match(pattern,'abc CQC')

if result1:
    print result1.group()
else:
    print '1fail'
if result2:
    print result2.group()
else:
    print '2fail'
if result3:
    print result3.group()
else:
    print'3fail'
if result4:
    print result4.group()
else:
    print '4fail'

结果如下:

abc
abc
3fail
abc

正则表达如下:

语法 意义 说明
"." 任意字符 a.c--->abc
"^" 字符串开头 'hello'匹配'helloword' 不匹配'aaaaahello'
"$" 字符串结尾 只匹配结尾字符串
"*" 匹配前一个字符0个或无限次 abc*--->ab或者abccc
"+" 匹配前一个字符1次或无限次 abc+--->abc或者abccc
"?" 匹配前一个字符0次或者1次 abc?--->ab或者abc
"{m}" 匹配前一个字符串m次 ab{3}c--->abbbc
"{m,n}" 匹配前一个字符串m至n次 ab{1,2}c--->abc或abbc
"\A" 仅匹配字符串开头 \Aabc--->abc
"\Z" 仅匹配字符串结尾 abc\Z--->abc
属性:
1.string: 匹配时使用的文本。
2.re: 匹配时使用的Pattern对象。
3.pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
4.endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
5.lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
6.lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
方法:
1.group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
2.groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
3.groupdict([default]):
返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
4.start([group]):
返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
5.end([group]):
返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
6.span([group]):
返回(start(group), end(group))。
7.expand(template):
将匹配到的分组代入template中然后返回。template中可以使用\id或\g、\g引用分组,但不能使用编号0。\id与\g是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符’0’,只能使用\g0。

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