python re.compile()和findall()

compile(pattern[,flags] ) 根据包含正则表达式的字符串创建模式对象。

>>>help(re.compile)
compile(pattern, flags=0)
    Compile a regular expression pattern, returning a pattern object.

通过help可以看到compile方法的介绍,返回一个pattern对象,但是却没有对第二个参数flags进行介绍。第二个参数flags是匹配模式,可以使用按位或’|’表示同时生效,也可以在正则表达式字符串中指定。pattern对象是不能直接实例化的,只能通过compile方法得到。匹配模式有:

  • re.I(re.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): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释

例如:

pattern1 = re.compile('abc', re.I) #忽略大小写

findall用法示例:

>>> import re  
>>> s = "adfad asdfasdf asdfas asdfawef asd adsfas "  

>>> reObj1 = re.compile('((\w+)\s+\w+)')  
>>> reObj1.findall(s)  
[('adfad asdfasdf', 'adfad'), ('asdfas asdfawef', 'asdfas'), ('asd adsfas', 'asd')]  

>>> reObj2 = re.compile('(\w+)\s+\w+')  
>>> reObj2.findall(s)  
['adfad', 'asdfas', 'asd']  

>>> reObj3 = re.compile('\w+\s+\w+')  
>>> reObj3.findall(s)  
['adfad asdfasdf', 'asdfas asdfawef', 'asd adsfas']  
  1. 当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。

  2. 当给出的正则表达式中带有一个括号时,列表的元素为字符串,此字符串的内容与括号中的正则表达式相对应(不是整个正则表达式的匹配内容)。

  3. 当给出的正则表达式中不带括号时,列表的元素为字符串,此字符串为整个正则表达式匹配的内容。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值