正则表达式复习+python使用正则

复习了下正则表达式的一般用法,足够cover日常需要了。软件 RegexBuddy非常好用,可以实时显示正则匹配效果,方便地用于测试。

1.逻辑或

例如,两个正则表达式满足其中一个就可。

start|end     //匹配start或者end

2.匹配任意单个字符

英文句号(.)可以匹配除了换行符(\n)以外的任何字符。

a.t     //at之间任何字符都能匹配,例如a1t、aat、a.t等

3.一行起始或一个字符串的头尾

^匹配一行的头部
$匹配一行的末尾
\b匹配一个单词的边界
\B匹配不是一个单词的边界,即在单词头尾间的情况

例如,字符串为:apple apple apple

^apple     //匹配第一个apple  
apple$     //匹配最后一个apple  


the     //任何包含the的字符串  
\bthe     //任何以the开头的字符串  
the\b     //     任何以the结尾的字符串  
\bthe\b     //仅仅匹配the这个单词  
\Bthe     //同\bthe相反的意思,任何不是以the开头的字符串  

4.字符集

.虽然可以表示任意字符,但有时候需要限定在某些范围内的字符。

2[abc]     //匹配2a,2b,2c  
[ab][cd]     //匹配ac,ad,bc,bd  
[0-9]     //匹配一个0至9的数字  
[^\t\n]     //不匹配\t或\n  

5.存在和频率的限定

(*)星号将匹配其左边的正则表达式出现0次或多次的情况
(+)加号将匹配1次或者多次的情况
(?)问号将匹配0次或多次的情况
({})大括号里是一个值或逗号分隔的两个值。例如{3}表示精确匹配前面的正则表达式出现3次,{1,5}表示精确匹配前面的正则表达式出现1至5次

6.一些特殊字符

\d     //匹配任一十进制数字,\D匹配任何非十进制数  
\w     //匹配任何字母数字,同[A-Za-z0-9]。\W与之相反  
\s     匹配任何空格表示字符,同[\n\t\r\v\f]。\S与之相反  

7.python使用正则表达式

需要导入re模块,search方法返回第一次匹配的结果

>>> import re
>>>
>>> pt = 'a[0-9]b'
>>> m = re.search(pt,'aaa abb a1b ab a2b')
>>> if m is not None:
...     print m.group()
... else:
...     print 'None'
...
a1b
>>>

使用findall()查询字符串中某个正则表达式匹配的全部出现情况,保存为list返回

>>> re.findall( 'a[0-9]b','aaa abb a1b ab a2b')
['a1b', 'a2b']

finditer()是一个与findall()类似但是更节省内存的变体,返回一个迭代器。

>>> for i in re.finditer(pt, 'aaa abb a1b ab a2b'):
...     print i.group(), i.span()
...
a1b (8, 11)
a2b (15, 18)

正则表达式的编译时必需的,那么使用预编译是可以提升执行性能的。

>>> regex = re.compile(r'a[0-9]b')
>>> print regex.findall('aaa abb a1b ab a2b')
['a1b', 'a2b']

8.其它

还有一些高级用法,实际用到时过去查。一些资料:
正则表达式30分钟入门教程:
http://deerchao.net/tutorials/regex/regex.htm
正则表达式– 语法| 菜鸟教程:
http://www.runoob.com/regexp/regexp-syntax.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值