首页 > 其他 > 详细

正则表达式

时间:2017-02-11 12:12:03      阅读:291      评论:0      收藏:0      [点我收藏+]

一。正则表达式语法

为什么要用 r’ ..‘ 字符串( raw 字符串)? 由于正则式的规则也是由一个字符串定义的,而在正则式中大量使用转义字符 ’/’ ,如果不用 raw 字符串,则在需要写一个 ’/’ 的地方,你必须得写成 ’//’, 那么在要从目标字符串中匹配一个 ’/’ 的时候,你就得写上 个 ’/’ 成为 ’////’ !这当然很麻烦,也不直观,所以一般都使用 r’’ 来定义规则字符串。当然,某些情况下,可能不用 raw 字符串比较好。

 

你可能已经看到前面关于原始字符串用法的一些例子了。原始字符串的产生正是由于有正则表
达式的存在。原因是ASCII 字符和正则表达式特殊字符间所产生的冲突。比如,特殊符号“\b”在
ASCII 字符中代表退格键,但同时“\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。
为了让RE 编译器把两个字符“\b”当成你想要表达的字符串,而不是一个退格键,你需要用另一个
反斜线对它进行转义,即可以这样写:“\\b”。
但这样做会把问题复杂化,特别是当你的正则表达式字符串里有很多特殊字符时,就更容
易令人困惑了。在第六章,我们曾介绍过原始字符串,它经常被用于简化正则表达式的复杂程度。
事实上,很多Python 程序员在定义正则表达式时都只使用原始字符串。
下面的例子用来说明退格键“\b” 和正则表达式“\b”(包含或不包含原始字符串)之间的区别:
>>> m = re.match(‘\bblow‘, ‘blow‘) # backspace, no match #退格键,没有匹配
>>> if m is not None: m.group()
...
>>> m = re.match(‘\\bblow‘, ‘blow‘) # escaped \, now it works #用\转义后,现在匹
配了
>>> if m is not None: m.group()
...
‘blow‘
>>> m = re.match(r‘\bblow‘, ‘blow‘) # use raw string instead #改用原始字符串
>>> if m is not None: m.group()
...
‘blow‘
你可能注意到我们在正则表达式里使用“\d”,没用原始字符串,也没出现什么问题。那是因为

ASCII 里没有对应的特殊字符,所以正则表达式编译器能够知道你指的是一个十进制数字

 

二。python的re模块

三。re模块的正则使用

正则表达式

原文:http://www.cnblogs.com/derekchen/p/6388696.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!