天天看點

python正規表達式(3)--match方法

1.re.match函數

re.match 嘗試從字元串的起始位置比對一個模式,如果不是起始位置比對成功的話,match()就傳回None。

(1)函數文法:

  re.match(pattern, string, flags=0)      

  函數參數說明:

    pattern   比對的正規表達式

    string      要比對的字元串

    flgs         标志位,用于控制正規表達式的比對方式

  我們可以使用group(num) 或 groups() 比對對象函數來擷取比對表達式。

    group(num=0)   擷取比對結果的各個分組的字元串,group() 可以一次輸入多個組号,此時傳回一個包含那些組所對應值的元組。

    groups()            傳回一個包含所有分組字元串的元組。

    注意:如果未比對成功,match()傳回值為None,此時再使用group()、groups()  方法會報錯。

         應該先擷取比對對象,然後判斷比對對象是否非空,當非空時在使用group()、groups()  方法擷取比對結果。見執行個體2

(2)執行個體

    例1

    import re

    print(re.match(r\'How\', \'How are you\').span())   # 在起始位置比對

    print(re.match(r\'are\', \'How are you\'))                # 不在起始位置比對

    以上輸出結果為:

(0, 3)
  None      

    例2

 import re

 content = \'577 zeke\'

 result = re.match(r\'[a-z]\d\' , content)

 if result:

   print result.group()

 else:

   print \'No match!\'

 以上執行結果如下:

 No match!

2.pattern.match方法

(1) 函數文法

  pattern.match( string, pos=0, endpos=len(string))

  函數作用:

    這個方法将在字元串string的pos位置開始 嘗試比對pattern(pattern就是通過 re.compile()方法編譯後傳回的對象),如 果pattern比對成功,無論是否達到結束位 置endpos,都會傳回一個比對成功後的 Match對象;

    如果比對不成功,或者 pattern未比對結束就達到endpos,則傳回 None。

  函數參數說明:

    string:被比對的字元串 

    pos:比對的起始位置,可選,預設為0

    endpos:比對的結束位置,可選,預設為 len(string)

3. re.match和pattern.match差別

  re.match方法與pattern.match()方法 差別在于,它不能指定比對的區 間pos和endpos兩個參數

python正規表達式(3)--match方法