Warning: file_put_contents(/www/phpfans/cache/article/articles/333732.html) [function.file-put-contents]: failed to open stream: No such file or directory in /www/phpfans/mod/phpfans/article/mod.index.php on line 481
核心笔记 : Python 原始字符串(raw strings)的用法

首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

核心笔记 : Python 原始字符串(raw strings)的用法

作者:  时间: 2011-03-25

核心笔记 : Python 原始字符串(raw strings)的用法
2011-03-16 11:00

核心笔记 : Python 原始字符串(raw strings)的用法
你可能已经看到前面关于原始字符串用法的一些例子了。原始字符串的产生正是由于有正则表
达式的存在。原因是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 里没有对应的特殊字符,所以正则表达式编译器能够知道你指的是一个十进制数字。

作者: babykick 发表于 2011-03-25 23:09 原文链接

评论: 0 查看评论 发表评论


最新新闻:
· Google小蜜蜂暂时回巢原因为何?(2011-03-25 22:50)
· Spotify感染病毒关闭第三方广告服务(2011-03-25 22:14)
· Google 将为欧洲专利局翻译专利(2011-03-25 22:09)
· BBC结束中文广播(2011-03-25 22:05)
· 学生设计卫星在轨道上成功分离(2011-03-25 22:03)

编辑推荐:向前向前向前!向Windows Phone平台前进

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库