零基础写python爬虫之神器正则表达式

2019-10-05 14:45:27王振洲


# -*- coding: utf-8 -*- 
#一个简单的re实例,匹配字符串中的hello字符串   
#导入re模块 
import re 
# 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串” 
pattern = re.compile(r'hello') 
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None 
match1 = pattern.match('hello world!') 
match2 = pattern.match('helloo world!') 
match3 = pattern.match('helllo world!')   
#如果match1匹配成功 
if match1: 
    # 使用Match获得分组信息 
    print match1.group() 
else: 
    print 'match1匹配失败!' 
#如果match2匹配成功 
if match2: 
    # 使用Match获得分组信息 
    print match2.group() 
else: 
    print 'match2匹配失败!' 
#如果match3匹配成功 
if match3: 
    # 使用Match获得分组信息 
    print match3.group() 
else: 
    print 'match3匹配失败!' 

可以看到控制台输出了匹配的三个结果:

下面来具体看看代码中的关键方法。
★ re.compile(strPattern[, flag]):
这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。
第二个参数flag是匹配模式,取值可以使用按位或运算符'|'表示同时生效,比如re.I | re.M。
另外,你也可以在regex字符串中指定模式,
比如re.compile('pattern', re.I | re.M)与re.compile('(?im)pattern')是等价的。
可选值有:
    re.I(全拼:IGNORECASE): 忽略大小写(括号内是完整写法,下同)
   re.M(全拼:MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
    re.S(全拼:DOTALL): 点任意匹配模式,改变'.'的行为
    re.L(全拼:LOCALE): 使预定字符类 w W b B s S 取决于当前区域设定
    re.U(全拼:UNICODE): 使预定字符类 w W b B s S d D 取决于unicode定义的字符属性
    re.X(全拼:VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。

以下两个正则表达式是等价的:


# -*- coding: utf-8 -*- 
#两个等价的re匹配,匹配一个小数 
import re 
a = re.compile(r"""d +  # the integral part
                   .    # the decimal point