Python的re模塊的常用方法


一、re的match與search方法

  1.re.match方法  

  re.match 嘗試從字符串的起始位置匹配一個模式,匹配成功re.match方法返回一個匹配的對象,如果不是起始位置匹配成功的話,match()就返回none。函數語法:

re.match(pattern, string[, flags])  

  函數參數說明:

  pattern:匹配的正則表達式

  string:要匹配的字符

  flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等

  2.match對象

  可以使用group() 、 groups()、groupdict() 匹配對象函數來獲取匹配表達式。

  group([group1, …]): 獲得一個或多個分組截獲的字符串;指定多個參數時將以元組形式返回。group1可以使用編號也可以使用別名;編號0代表整個匹配的子串;不填寫參數時,返回group(0);沒有截獲字符串的組返回None;截獲了多次的組返回最后一次截獲的子串

  groups([default]): 以元組形式返回全部分組截獲的字符串。相當於調用group(1,2,…last)。default表示沒有截獲字符串的組以這個值替代,默認為None。

  groupdict([default]): 返回以有別名的組的別名為鍵、以該組截獲的子串為值的字典,沒有別名的組不包含在內。default含義同上。

  

  3.re.search方法

  re.search 掃描整個字符串並返回第一個成功的匹配。匹配成功re.search方法返回一個匹配的對象,否則返回None。函數語法:

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

  參數說明:

  pattern:匹配的正則表達式

  string:要匹配的字符

  flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等

  程序例子:

  match與search方法的區別:

import re
reg = re.compile(r'(hello w.*)(hello l.*)')
print (dir(reg))
a = 'hello world hello ling'
result = reg.match(a)
print (result)
print (result.group())


b='aa'+a
print (b)
result2 = reg.match(b)
print (result2)

#正則對象的search
print ('###############search########################')
result3 = reg.search(b)
print (result3)
print (result3.group())

結果:

  group() 、 groups()、groupdict()三種獲取方式的區別:

import re
prog = re.compile(r'(?P<tagname>abc)(.*)(?P=tagname)')
result = prog.match('abclfjlad234sjldabc')

print(dir(result))

print ('##########groups()##############')
print (result.groups())

print ('##########group()##############')
print (result.group(2))
print (result.group(1))
print (result.group('tagname'))


print ('##########groupdict()##############')
print (result.groupdict())

結果:

 

二、re的split、findall、finditer方法 

  split(string[, maxsplit]):按照能夠匹配的子串將string分割后返回列表。maxsplit用於指定最大分割次數,不指定將全部分割。

  findall(string[, pos[, endpos]]) :搜索string,以列表形式返回全部能匹配的子串.

  finditer(string[, pos[, endpos]]):搜索string,返回一個順序訪問每一個匹配結果(Match對象)的迭代器。

  程序例子如下:

import re

p1 = re.compile(r'\d+')
a_str = 'one1two2three3four4'

#正則對象的split方法,使用正則匹配進行分割字符串
#以列表的形式返回
print(p1.split(a_str))

#正則對象的findall方法,來查找符合對象的字符串
#最后是以列表的形式返回
print (p1.findall(a_str))

for i in p1.finditer(a_str):
        print (i.group())

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM