摘要:它與新行無關,因此它在模式上與的用法不同。如果沒有位置能夠匹配這個模式則返回注意這個跟在字符的某處有長度的匹配是有區別的。
問:在Python正則模式中search()和match()的區別是什么?
</>復制代碼
我已經閱讀了現有的相關文檔,但是我總是記不住,碰到類似的問題,我還要不斷地查找再學習,我希望某個大神能夠給個清晰的案例,讓我能夠很好的記住,或者至少能夠在Stackoverflow上有個地方能夠讓我再學習的時候方便地找到。
答:
re.match位于字符串的開頭。它與新行無關,因此它在模式上與^的用法不同。
正如re.match文檔所說:
</>復制代碼
如果在字符串的開頭有0個或更多個字符符合正則表達式模式,返回相關匹配的實例對象,如果字符串不符合正則表達式模式則返回None.(注這個跟0長度的匹配是有區別的)
注:如果你想要在字符串中定位任意一個匹配位置的話,請轉用search()。
re.search搜索整個字符串,正如re.search文檔所說:
</>復制代碼
掃描整個字符串,如果產生了一個匹配正則模式就尋找到這個位置,返回相關匹配的對象。如果沒有位置能夠匹配這個模式則返回None.(注意這個跟在字符的某處有0長度的匹配是有區別的。)
所以,如果你想要從字符串的一開始就進行匹配或匹配整個字符串的話就使用match。它更加快速,否則請使用search。
該文檔有個專門的章節講述match和search同樣覆蓋了多行字符串:
</>復制代碼
Python根據正則表達式提供兩種不同的基本操作:match只在字符串的開始確認一個匹配,而search在字符串的任何匹配的位置都確認。(Perl默認就是這么設置的)
注意即使在使用以^開始的正則表達式時match也可能不同于search:
^只在字符串的開頭匹配,或在多行模式立刻緊跟一個新行。
不管出于什么模式,match操作只有在一開始字符串匹配的情況下能夠成功,或者在可選參數pos給定的開始位置。(不管在這之前有沒有新行)
概念說的足夠多了,下面給大家上些例子:
</>復制代碼
# example code:
string_with_newlines = """something
someotherthing"""
import re
print re.match("some", string_with_newlines) # matches
print re.match("someother", string_with_newlines) # won"t match
print re.match("^someother", string_with_newlines, re.MULTILINE) # also won"t match
print re.search("someother", string_with_newlines) # finds something
print re.search("^someother", string_with_newlines, re.MULTILINE) # also finds something
m = re.compile("thing$", re.MULTILINE)
print m.match(string_with_newlines) # no match
print m.match(string_with_newlines, pos=4) # matches
print m.search(string_with_newlines,re.MULTILINE) # also matches
譯者注:
1.re.match() 從第一個字符開始找, 如果第一個字符就不匹配就返回None, 不繼續匹配. 用于判斷字符串開頭或整個字符串是否匹配,速度快.
2.re.search() 會整個字符串查找,直到找到一個匹配。
3.re.MULTILINE 匹配多行模式。
來源:Stackoverflow問題。
What is the difference between Python"s re.search and re.match?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38148.html
摘要:正則表達式關閉或可選標志。如果所含正則表達式,以表示,在當前位置成功匹配時成功,否則失敗。否則指的是八進制字符碼的表達式。 正則表達式是個很牛逼的東西,不管是在javascript,還是在Python web開發(http://www.maiziedu.com/course/python-px...)中,我們都會遇到正則表達式,雖然javascript和Python的正則表達式區別不大...
摘要:正則表達式匹配的字符串限定范圍和否定除了單字符外,字符集還支持匹配指定的字符范圍。問號要求正則表達式引擎在當前正則表達式中盡可能少地匹配字符。正則表達式匹配的字符串表示簡單浮點數的字符串擴展表示法正則表達式的擴展表示法,以問號開始。 簡介 正則表達式 是包含文本和特殊字符的字符串, 為高級的文本模式匹配, 抽取, 與文本形式的搜索和替換功能提供了基礎 Python通過標準庫re模...
摘要:在中,使用的內置模塊處理正則表達式操作。使用正則表達式對象在字符串中搜索模式。編寫和使用正則表達式在中創建正則表達式的第一步是導入模塊正則表達式使用模式字符串表示,模式字符串是指定所需搜索模式的字符串。 showImg(https://segmentfault.com/img/remote/1460000019166945?w=504&h=300); 來源 | 愿碼(ChainDes...
摘要:如果經過一系列輸入,最終如果能達到狀態,則輸入內容一定滿足正則表達式。正則表達式可以轉換為,已經有成熟的算法實現這一轉換。不過有時候轉換為可能導致狀態空間的指數增長,因此直接用識別正則表達式。 原文地址 先來看一個讓人震撼的小故事,故事來自知乎問題PC用戶的哪些行為讓你當時就震驚了? 同學在一個化妝品公司上班,旁邊一個大媽(四十多歲)發給他一個exl表,讓他在里面幫忙找一個經銷商的資料...
閱讀 3959·2021-11-24 09:38
閱讀 1432·2021-11-19 09:40
閱讀 2782·2021-11-18 10:02
閱讀 3704·2021-11-09 09:46
閱讀 1777·2021-09-22 15:27
閱讀 3119·2019-08-29 15:24
閱讀 1005·2019-08-29 12:40
閱讀 1689·2019-08-28 18:24
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要