1. 程式人生 > >python指令碼——re.match()和re.research()方法總結

python指令碼——re.match()和re.research()方法總結

剛完成公司安排的小任務,寫個小筆記記錄下。

(1)re.match()函式

re.match 嘗試從字串的開始匹配一個模式。

函式語法

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

函式引數說明:

引數 描述
pattern 匹配的正則表示式
string 要匹配的字串。
flags 標誌位,用於控制正則表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

匹配成功re.match方法返回一個匹配的物件,否則返回None。

我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

匹配物件方法 描述
group(num=0) 匹配的整個表示式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應值的元組。
groups() 返回一個包含所有小組字串的元組,從 1 到 所含的小組號。

(2)re.research()函式

re.search匹配整個字串,直到找到一個匹配。

函式語法:

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

函式引數說明:

引數 描述
pattern 匹配的正則表示式
string 要匹配的字串。
flags 標誌位,用於控制正則表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

匹配成功re.search方法方法返回一個匹配的物件,否則返回None。

我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

匹配物件方法 描述
group(num=0) 匹配的整個表示式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應值的元組。
groups() 返回一個包含所有小組字串的元組,從 1 到 所含的小組號。

(3)例項

我這裡採用re.search()函式解決的問題。

測試資料集為購物網站使用者評論

        例項程式碼:

# -*-coding:utf-8 -*-

import sys
import re
reload(sys)

text = open('JD_DFB_comments.txt')

line = text.readline()

#i = 0 

while line:
        
    #i = i+1
    
    #re.search匹配整個字串,直到找到一個匹配。
    n1 = re.search(r'(要(是|能)(.*)就(更|好|再|直觀|完美|太)(.*)了)',line)
    n2 = re.search(r'(如果)(.*)就(更|好|再|直觀|完美|太)(.*)了',line)
    
    #開啟將要寫入的資料
    data = open('aa.txt','a')
    
    if n1:
        #print line
        data.write(line)      #寫入匹配到的資料
        
        #print i              記錄匹配結果所在的行數
        #print n1.group()     #等於print line
        
        print n1.group(3)     #打出第三個括號裡的內容
          
    if n2:
       
        #print n2.group()
                
        print n2.group(2)        
        
    line = text.readline()
    
text.close()