深入Python3 (Dive Into Python3)笔记5--正则表达式
2010-11-29 20:46
405 查看
《深入 python3
》中文版
http://woodpecker.org.cn/diveintopython3/index.html
5.1. 深入
5.2. 案例研究: 街道地址
4.是时候转换到正则表达式了。在python中,所有的正则表达式相关功能都包含在re模块中。re.sub('ROAD$', 'RD.', s)
正则表达式模块的re.sub()函数可以做字符串替换,它在字符串s中用正则表达式‘ROAD$’来搜索并替换成‘RD.’。它只会匹配字符串结尾的‘ROAD’,而不会匹配到‘BROAD’中的‘ROAD’,因为这种情况它在字符串的中间。
re.sub('//bROAD$', 'RD.', s)
为了在正则表达式中表达这个独立的词,你可以使用‘/b’。它的意思是“在右边必须有一个分隔符”。在python中,比较复杂的是‘/’字符必须被转义,这有的时候会导致‘/’字符传染(想想可能还要对/字符做转义的情况)。
re.sub(r'/bROAD$', 'RD.', s)
2.为了解决‘/’字符传染的问题,可以使用原始字符串。这只需要在字符串的前面添加一个字符‘r’。它告诉python,字符串中没有任何字符需要转义。‘/t’是一个制表符,但r‘/t’只是一个字符‘/’紧跟着一个字符t。我建议在处理正则表达式的时候总是使用原始字符串。否则,会因为理解正则表达式而消耗大量时间(本身正则表达式就已经够让人困惑的了)。
5.3. 案例研究: 罗马数字
5.3.1. 检查千位数
? 表示匹配是可选的5.3.2. 检查百位数
5.4. 使用语法{n,m}
{1,4} 匹配1到4个前面的模式5.4.1. 检查十位和个位
(A|B) 匹配A模式或者B模式中的一个5.5. 松散正则表达式
松散正字表达式和普通紧凑的正则表达式有两点不同:空白符被忽略。空格、制表符和回车在正则表达式中并不会匹配空格、制表符、回车。如果你想在正则表达式中匹配他们,可以在前面加一个/来转义。
注释信息被忽略。松散正字表达式中的注释和python代码中的一样,都是以#开头直到行尾。它可以在多行正则表达式中增加注释信息,这就避免了在python代码中的多行注释。他们的工作方式是一样的。
re.search(pattern, 'M', re.VERBOSE)
注意,如果要使用松散正则表达式,需要传递一个叫re.VERBOSE的参数。
5.6. 案例研究: 解析电话号码
/d 匹配所有0-9的数字. /D 匹配除了数字外的所有字符.phonePattern = re.compile(r'^(/d{3})-(/d{3})-(/d{4})$')
phonePattern.search('800-555-1212').groups()
phonePattern = re.compile(r'^(/d{3})/D+(/d{3})/D+(/d{4})/D+(/d+)$')
注意了!你匹配了字符串开始,然后是3个数字的分组,接着是/D+,这是什么?好吧,/D匹配除了数字以外的任意字符,+的意思是一个或多个。因此/D+匹配一个或一个以上的非数字字符。这就是你用来替换连字符的东西,它用来匹配不同的分隔符。
5.7. 小结
现在,你应该已经熟悉了下面的技巧:^ 匹配字符串开始位置。
$ 匹配字符串结束位置。
/b 匹配一个单词边界。
/d 匹配一个数字。
/D 匹配一个任意的非数字字符。
x? 匹配可选的x字符。换句话说,就是0个或者1个x字符。
x* 匹配0个或更多的x。
x+ 匹配1个或者更多x。
x{n,m} 匹配n到m个x,至少n个,不能超过m个。
(a|b|c) 匹配单独的任意一个a或者b或者c。
(x) 这是一个组,它会记忆它匹配到的字符串。你可以用re.search返回的匹配对象的groups()函数来获取到匹配的值。
相关文章推荐
- Python 正则表达式 re 模块简明笔记
- Python学习笔记6-Python中re(正则表达式)模块学习
- python的re正则表达式学习笔记1
- Python学习笔记 - 正则表达式
- Spider 之 深入解析 Python 正则表达式
- python学习笔记(五)正则表达式的基本语法和re模块API
- Python学习笔记5(字符串与正则表达式)
- Python学习笔记(四)——模式匹配与正则表达式
- python基础学习笔记(三) 文件、time和正则表达式
- Python学习笔记57(正则表达式)
- python爬虫之正则表达式学习笔记一
- Python初学者笔记(三):用白话讲“正则表达式”入门(下篇),看不懂算我输!
- 【学习笔记】Python中的正则表达式re
- Python下的正则表达式原理和优化笔记
- Python开发笔记之正则表达式的使用
- Python 正则表达式笔记
- Python 爬虫学习笔记之正则表达式
- Python学习笔记6-Python中re(正则表达式)模块学习
- Python学习笔记九:正则表达式
- Python - 正则表达式学习笔记