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

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

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

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

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

re.match函數(shù)

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

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

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

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


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

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

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


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



# coding=utf-8

# 導入re模塊
import re

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

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


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


#coding=utf-8

  import re

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

  result.group()


運行結(jié)果為:
itcast

2、re.search

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


#coding=utf-8
import re

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


運行結(jié)果:
'9999'


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

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


#coding=utf-8
import re

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


運行結(jié)果:
['9999', '7890', '12345']


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

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


猜你喜歡

python是什么?python的用途

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