正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。
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的用途