python之正則

概括:

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等匹配本地字符集  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章