微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python标准库01 正则表达式(re包)

python正则表达式基础

简单介绍

正则表达式并不是python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法及一个独立的处理引擎,效率上可能不如str自带方法,但功能十分强大。在提供正则表达式的语言里,正则表达式的语法是一样的,区别只在于不同的贬称语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的的部分。

正则表达式进行匹配的流程

正则表达式引擎“编译”<正则表达式>得到正则表达式对象(正则表达式引擎编译表达式字符串得到的对象,包含应如何进行匹配的信息),正则表达式对象需要匹配的文本进行"匹配",生成匹配结果(正则表达式对象对文本进行匹配后得到的结果,包含了这次成功匹配的信息,如匹配到的字符串、分组以及在文本中的索引)。

匹配大概过程

正则表达式的大致匹配过程是:一次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有些不同,但也是很好理解的,多看实例多使用几次就能明白。

python支持的正则表达式元字符和语法

语法         说明                                                表达实例        完整匹配的字符串
一般字符     匹配自身                                            abc             abc
.            匹配任意一个字符("\n")                          ac\            转义字符, 使后一个字符改变原来的意思                \            c
[...]        字符集字符类对应位置可以是字符集中任意一个字符    [bcd]e         abe  aceade
|b          字符或字符   <-等价于-> ab]
0-9        数字其中一个字符
z        小写字母AZ        大写字母[^m         不是字符m
---------------------------------------------------------------------------------------------------
d           数字:                                         dca1c
D           非数字:                                       Dcs           空白字符:[<空格>trnfv                        scS           非空白字符:                                   Scw           单词字符:Zaz0                               wcW           非单词字符:Wc-------------------------数量重复)------------------------------------------------------
*            匹配前一个字符次或无限次(>=                      abccabccc...
+1?次或{}          匹配前一个字符2          abbc
        匹配前一个字符<=>=);可以省略                 *?+???}?  使变成非贪婪模式
------------------------------边界匹配------------------------------------------------------
^            匹配字符串开头在多行模式中匹配每一行的开头)
$            匹配字符串末尾在多行模式中匹配每一行的末尾           仅匹配字符串开头                                    这几种匹配模式有点疑惑??????
           仅匹配字符串末尾
\           匹配\和\之间
\B           逻辑、分组代表左右表达式任意匹配一个类似短路或先匹配左边defdef
(...)        被括起来的表达式将作为分组 从表达式左边开始每遇到  ){abcabc
             一个分组的左括号'('编号;分组表达式作为一个整体123456      a123ca456c
             可以后接数量表达式中的仅在该组中有效
(?P<name>...)分组 除了原有的编号外再指定一个额外的别名          idnumber    引用编号为的分组匹配到的字符串              1abc15abc5
=    引用别名为的分组匹配到的字符串                特殊构造不作为分组)---------------------------------------------------
(?:...)的不分组版本 用于使用'|'或后接数量(?:iLmsux    的每个字符代表一个匹配模式 只能用在正则的开头iAbc
#...)      #后的内容作为注释被忽略                             abc(?#comment)123 abc123
(?=...)      之后的字符串内容需要匹配表达式才能成功匹配不消耗字符串内容  (?=  后面是数字的a
(?!...)      之后的字符串内容需要不匹配表达式才能成功匹配不消耗字符串内容(?!  后面不是数字的(?<=...)     之前的字符串内容需要匹配表达式才能成功匹配(?<=   前面不是数字的(?<!...)     之前的字符串内容需要不匹配表达式才能成功匹配(?<! 前面不是数字的a

 

 

 

参考:

http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

http://www.runoob.com/python/python-reg-expressions.html

http://www.cnblogs.com/PythonHome/archive/2011/11/19/2255459.html

http://www.cnblogs.com/kaituorensheng/p/3489492.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐