python指令碼——re.match()和re.research()方法總結
阿新 • • 發佈:2019-01-26
剛完成公司安排的小任務,寫個小筆記記錄下。
(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()