教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

python正則表達式match search 和findall之間的區(qū)別是什么?[軟件測試培訓]

更新時間:2019年11月11日15時24分 來源:傳智播客 瀏覽次數:

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。
Python 自1.5版本起增加了re 模塊,它提供 Perl 風格的正則表達式模式。
re 模塊使 Python 語言擁有全部的正則表達式功能。
compile 函數根據一個模式字符串和可選的標志參數生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。
re模塊也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字符串做為它們的第一個參數。
推薦了解:傳智播客軟件測試學科

re.match函數

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

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

函數參數說明:
參數 描述
pattern 匹配的正則表達式
string 要匹配的字符串。
flags 標志位,用于控制正則表達式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

匹配成功re.match方法返回一個匹配的對象,否則返回None。
 
re模塊的使用過程:


# coding=utf-8
# 導入re模塊
import re

# 使用match方法進行匹配操作
result = re.match(正則表達式, 要匹配的字符串)

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


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



# coding=utf-8

# 導入re模塊
import re

# 使用match方法進行匹配操作
result = re.match(正則表達式, 要匹配的字符串)

# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()


1、re 模塊案例:
匹配以itcast開頭的語句


#coding=utf-8

  import re

  result = re.match("itcast","itcast.cn")

  result.group()


運行結果為:
itcast

2、re.search

re.match 只能在起始位置匹配,而re.search可以掃描整個字符串并返回第一個成功的匹配
需求:匹配出文章閱讀的次數


#coding=utf-8
import re

ret = re.search(r"\d+", "閱讀次數為 9999")
ret.group()


運行結果:
'9999'


3、re.findall
re.match和re.search兩個都只能找到一個匹配結果,而findall可以找到所有滿足匹配條件的結果,并以列表的形式返回。

需求:統(tǒng)計出python、c、c++相應文章閱讀的次數
 


#coding=utf-8
import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret)


運行結果:
['9999', '7890', '12345']


三者之間的區(qū)別:

模式 匹配方法 返回結構
match 只從字符串起始位置進行匹配 None或者起始位置匹配成功的字符
search 整個字符串,并且返回第一個符合要求的匹配 第一個匹配成功的字符串
findall 返回字符串滿足要求的所有的匹配 所有結果,并且以列表形式返回


猜你喜歡

python是什么?python的用途

0 分享到:
和我們在線交談!