python之正则

来源:互联网 发布:windows live登陆 编辑:程序博客网 时间:2024/05/17 22:24

概括:

python使用re正则模块来实现正则表达式,import re。

元字符含义:

一、字符串里含有什么字符

1、首先确定一下元字符(不是代表字面意思的字符)有哪些。

\          代表转义

|          代表分支选择

( )        代表捕捉

[ ]        代表字符数组

] 比较特殊,只有前面有相应的[ 和 { 时,才会是元字符,否则就是普通字符。()没有使用此规则

^  $      #行首,行尾

 * + ?    #代表数量

.            #代表任意字符

2、单个字符的描述

除了在上面提到的元字符,想要匹配什么字符直接写就可以了,例如'a' 匹配 正则表达式 a。

而要想匹配元字符本身只需要在前面加上转义字符(\)就可以了。

3、非打印字符及某类字符的表示

非打印字符和标准的基本一直,列举如下:

\d         匹配任何数字,等同于[0-9],注意这里的-只有在字符数组里才是元字符

\D         匹配任何非数字,等同于[^0-9]。

\s        匹配任何空白字符,等同于[\f\t\n\r ]

\S        匹配任何非空白字符,等同于[^\f\t\n\r ]

\t         匹配tab

\w       匹配任何字母数字或者下划线

\W      匹配上面以外的

二、字符串的位置

1、基本位置描述符

^    匹配字符串的起始位置

\A   匹配字符串的起始位置

$    匹配字符串结束位置。

\Z   匹配字符串的结束位置。

\b   匹配单词边界。

(?#) 注释

(?=) 匹配一个正则位置

(?!)  不匹配一个正则位置

三、字符串里字符的数量

*  0次或者多次 (尽可能的多匹配)

?  0次或者1次  (尽可能的多匹配)

+ 1次或者多次 (尽可能的多匹配)

{n} n次

{m,n} m次到n次

{m,} m次以上     注意 {,n}是错误的写法。

在以上的数量修饰符的最后再加一个?就是尽可能的少匹配。

四、举例

import re    if re.match(r"\d+","a99b"): #match必须是从头匹配      print "match ok!"    if re.search(r"\d+","a99b"):      print "search ok!"    print re.search(r"\d+","a99b").group() #group返回匹配的字符串  print re.search(r"(\d+)(\w)","a99b98c").groups() #返回子组字符串  print re.findall(r"\d+","a99b88c") #findall直接返回匹配的字符串列表  print re.sub(r"\d+","num","a99b88c") #把99 和 88 都替换成num  

五、附加选项

import re    if re.match(r"a","A"):      print "test1 ok"    if re.match(r"(?i)a","A"): #附加选项必须在正则表达式最前面(?i)代表忽略大小写,对应re.I      print "test2 ok"    #ma=re.compile("a",re.I)  #if ma.match("A"):  #   print "good!"    if re.search(r"^\d","abcd\n1234"): #\A,\Z只匹配字符串的开头和结尾,不受(?m)的影响      print "test3 ok"    if re.search(r"(?m)^\d","abcd\n1234"): #每一行的开头和结尾都认为是字符串的开始和结尾,对应re.M      print "test4 ok"    print re.search(r".+","abcd\nefg").group() #输出abcd  print re.search(r"(?s).+","abcd\nefg").group() #输出abcd\nefg,对应re.S    if re.match(r"\w","我"):      print "test5 ok"    if re.match(r"(?u)\w","我"): #匹配unicode,对应re.U      print "test6 ok"    #(?x),re.X 对应可以在正则中插入空白符  #(?L),re.L 对应\w等匹配本地字符集  



原创粉丝点击