首页 > 其他 > 详细

拓展:正则表达式-初识

时间:2014-03-04 09:28:20      阅读:515      评论:0      收藏:0      [点我收藏+]

该部分为中谷教育Python视频教程的学习笔记
正则表达式(RE)是一种小型的高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现。
其作用:
1.可以为想要匹配的相应字符串集指定规则
2.该字符串集可能包含英文语句、email地址、命令或者任何你想搞定的东西
3.可以问诸如“这个字符串匹配该模式吗?”
4“在这个字符串中是否有部分匹配该模式呢?”
5.你也可以使用RE以各种方式来修改或分割字符串
正则表达式是一门独立的语言,并不是python中特有的。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。
(并非所有字符串处理都能用正则表达式完成) 
字符匹配:
普通字符:
    大多数字字母和字符一般都会和自身匹配
    如正则表达式test会和字符串“test”完全匹配
元字符
    . ^ $ * + ? {} [] \ | ()

[]方括号
     常用来指定一个字符集:[abc];[a-z]
    元字符在字符集中不起作用:[akm$]
    补集匹配不在区间范围内的字符:[^5]
这是最原始的 通过普通字符去匹配它自身

bubuko.com,布布扣
>>> import re
>>> s = abc
>>> 
>>> s = rabc
>>> 
>>> re.findall(s,aaaaaaaaaads sscabc)
[abc]
>>> re.findall(s,aaaaaaaaaads sscab)
[]
>>> re.findall(s,aaabcaaaabcaaads sscab)
[abc, abc]
>>>
bubuko.com,布布扣

有些时候规则有些变化

bubuko.com,布布扣
>>> st = top tip tqp twp tep                #定义一个字符串
>>> 
>>> res = rtop                            #定义一个正则表达式
>>> 
>>> re.findall(res,st)                #在字符串里匹配
[top]
>>> res = rtip
>>> re.findall(res,st)
[tip]
>>> res = rt[io]p            #如果要匹配tip和top,那么用方括号
>>> 
>>> re.findall(res,st)
[top, tip]
>>> res = rt[^io]p            #如果要匹配除了tip和top之外的区间,那么使用[^io]
>>> re.findall(res,st)
[tqp, twp, tep]
>>>
bubuko.com,布布扣

 

^
    匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。

bubuko.com,布布扣
>>> import re
>>> s = hello world,hello boy 
>>> r = rhello
>>> re.findall(r,s)
[hello, hello]
>>> r = r^hello
>>> re.findall(r,s)
[hello]
>>> s = world,hello boy
>>> re.findall(r,s)
[]
>>> r = r^world
>>> re.findall(r,s)
[world]
>>>
bubuko.com,布布扣

$
    匹配行尾,行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。

>>> s = world,hello boy
>>> r = rboy$
>>> re.findall(r,s)
[boy]
>>>
综合示例:
bubuko.com,布布扣
>>> import re
>>> 
>>> r = t[abc$]
>>> 
>>> re.findall(r,ta)
[ta]
>>> re.findall(r,tb)
[tb]
>>> re.findall(r,tax)
[ta]
>>> re.findall(r,t$)          #这里$符号作为一个普通的字符输出
[t$]
>>> r = t[abc^]
 #这里^符号也是作为一个普通的字符输出。如果放在开头如‘t[^abc]‘那就是取匹配区间外的字符串了
>>> re.findall(r,t^)  
[t^]
>>> 
>>> r = rx[0123456789]x           #可以写成x[0-9]x
>>> 
>>> re.findall(r,x1x)
[x1x]
>>> re.findall(r,x1x,x2x)
[x1x, x2x]
>>> re.findall(r,x1x,x2x,x9x)
[x1x, x2x, x9x]
>>> r = rx[0-9]x
>>> re.findall(r,x1x,x2x,x9x)
[x1x, x2x, x9x]
>>> r = rx[a-zA-Z0-9]x        #同理,匹配一个比较大的范围,用-号
>>> re.findall(r,x1x,xRx,xgx)
[x1x, xRx, xgx]
>>>
bubuko.com,布布扣

拓展:正则表达式-初识,布布扣,bubuko.com

拓展:正则表达式-初识

原文:http://www.cnblogs.com/fishdm/p/3578875.html

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