成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

譯-在Python正則模式中search()和match()的區(qū)別是什么?

MycLambert / 710人閱讀

摘要:它與新行無(wú)關(guān),因此它在模式上與的用法不同。如果沒(méi)有位置能夠匹配這個(gè)模式則返回注意這個(gè)跟在字符的某處有長(zhǎng)度的匹配是有區(qū)別的。

問(wèn):在Python正則模式中search()和match()的區(qū)別是什么?

我已經(jīng)閱讀了現(xiàn)有的相關(guān)文檔,但是我總是記不住,碰到類似的問(wèn)題,我還要不斷地查找再學(xué)習(xí),我希望某個(gè)大神能夠給個(gè)清晰的案例,讓我能夠很好的記住,或者至少能夠在Stackoverflow上有個(gè)地方能夠讓我再學(xué)習(xí)的時(shí)候方便地找到。


答:
re.match位于字符串的開(kāi)頭。它與新行無(wú)關(guān),因此它在模式上與^的用法不同。
正如re.match文檔所說(shuō):

如果在字符串的開(kāi)頭有0個(gè)或更多個(gè)字符符合正則表達(dá)式模式,返回相關(guān)匹配的實(shí)例對(duì)象,如果字符串不符合正則表達(dá)式模式則返回None.(注這個(gè)跟0長(zhǎng)度的匹配是有區(qū)別的)

注:如果你想要在字符串中定位任意一個(gè)匹配位置的話,請(qǐng)轉(zhuǎn)用search()。

re.search搜索整個(gè)字符串,正如re.search文檔所說(shuō):

掃描整個(gè)字符串,如果產(chǎn)生了一個(gè)匹配正則模式就尋找到這個(gè)位置,返回相關(guān)匹配的對(duì)象。如果沒(méi)有位置能夠匹配這個(gè)模式則返回None.(注意這個(gè)跟在字符的某處有0長(zhǎng)度的匹配是有區(qū)別的。)

所以,如果你想要從字符串的一開(kāi)始就進(jìn)行匹配或匹配整個(gè)字符串的話就使用match。它更加快速,否則請(qǐng)使用search。

該文檔有個(gè)專門(mén)的章節(jié)講述match和search同樣覆蓋了多行字符串:

Python根據(jù)正則表達(dá)式提供兩種不同的基本操作:match只在字符串的開(kāi)始確認(rèn)一個(gè)匹配,而search在字符串的任何匹配的位置都確認(rèn)。(Perl默認(rèn)就是這么設(shè)置的)

注意即使在使用以^開(kāi)始的正則表達(dá)式時(shí)match也可能不同于search:
^只在字符串的開(kāi)頭匹配,或在多行模式立刻緊跟一個(gè)新行。
不管出于什么模式,match操作只有在一開(kāi)始字符串匹配的情況下能夠成功,或者在可選參數(shù)pos給定的開(kāi)始位置。(不管在這之前有沒(méi)有新行)

概念說(shuō)的足夠多了,下面給大家上些例子:

# 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() 從第一個(gè)字符開(kāi)始找, 如果第一個(gè)字符就不匹配就返回None, 不繼續(xù)匹配. 用于判斷字符串開(kāi)頭或整個(gè)字符串是否匹配,速度快.
2.re.search() 會(huì)整個(gè)字符串查找,直到找到一個(gè)匹配。
3.re.MULTILINE 匹配多行模式。

來(lái)源:Stackoverflow問(wèn)題。
What is the difference between Python"s re.search and re.match?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38148.html

相關(guān)文章

  • Python基礎(chǔ)教程:-正則表達(dá)式基本語(yǔ)法以及re模塊

    摘要:正則表達(dá)式關(guān)閉或可選標(biāo)志。如果所含正則表達(dá)式,以表示,在當(dāng)前位置成功匹配時(shí)成功,否則失敗。否則指的是八進(jìn)制字符碼的表達(dá)式。 正則表達(dá)式是個(gè)很牛逼的東西,不管是在javascript,還是在Python web開(kāi)發(fā)(http://www.maiziedu.com/course/python-px...)中,我們都會(huì)遇到正則表達(dá)式,雖然javascript和Python的正則表達(dá)式區(qū)別不大...

    y1chuan 評(píng)論0 收藏0
  • Python正則表達(dá)式

    摘要:正則表達(dá)式匹配的字符串限定范圍和否定除了單字符外,字符集還支持匹配指定的字符范圍。問(wèn)號(hào)要求正則表達(dá)式引擎在當(dāng)前正則表達(dá)式中盡可能少地匹配字符。正則表達(dá)式匹配的字符串表示簡(jiǎn)單浮點(diǎn)數(shù)的字符串?dāng)U展表示法正則表達(dá)式的擴(kuò)展表示法,以問(wèn)號(hào)開(kāi)始。 簡(jiǎn)介 正則表達(dá)式 是包含文本和特殊字符的字符串, 為高級(jí)的文本模式匹配, 抽取, 與文本形式的搜索和替換功能提供了基礎(chǔ) Python通過(guò)標(biāo)準(zhǔn)庫(kù)re模...

    Lowky 評(píng)論0 收藏0
  • 使用Python正則表達(dá)式操作文本數(shù)據(jù)

    摘要:在中,使用的內(nèi)置模塊處理正則表達(dá)式操作。使用正則表達(dá)式對(duì)象在字符串中搜索模式。編寫(xiě)和使用正則表達(dá)式在中創(chuàng)建正則表達(dá)式的第一步是導(dǎo)入模塊正則表達(dá)式使用模式字符串表示,模式字符串是指定所需搜索模式的字符串。 showImg(https://segmentfault.com/img/remote/1460000019166945?w=504&h=300); 來(lái)源 | 愿碼(ChainDes...

    Yuanf 評(píng)論0 收藏0
  • 眾里尋她千百度--正則表達(dá)式

    摘要:如果經(jīng)過(guò)一系列輸入,最終如果能達(dá)到狀態(tài),則輸入內(nèi)容一定滿足正則表達(dá)式。正則表達(dá)式可以轉(zhuǎn)換為,已經(jīng)有成熟的算法實(shí)現(xiàn)這一轉(zhuǎn)換。不過(guò)有時(shí)候轉(zhuǎn)換為可能導(dǎo)致?tīng)顟B(tài)空間的指數(shù)增長(zhǎng),因此直接用識(shí)別正則表達(dá)式。 原文地址 先來(lái)看一個(gè)讓人震撼的小故事,故事來(lái)自知乎問(wèn)題PC用戶的哪些行為讓你當(dāng)時(shí)就震驚了? 同學(xué)在一個(gè)化妝品公司上班,旁邊一個(gè)大媽(四十多歲)發(fā)給他一個(gè)exl表,讓他在里面幫忙找一個(gè)經(jīng)銷商的資料...

    golden_hamster 評(píng)論0 收藏0
  • 正則表達(dá)式

    摘要:用戶輸入的字符串正則表達(dá)式切分字符串切分字符串,可以將字符串匹配正則表達(dá)式的部分割開(kāi)并返回一個(gè)列表。在字符串中找到正則表達(dá)式所匹配的所有子串,并組成一個(gè)列表返回。 正則表達(dá)式 目錄 正則表達(dá)式特殊序列 showImg(https://sfault-image.b0.upaiyun.com/343/342/3433429958-5795b5bde9c7d); 表 showImg(http...

    hover_lew 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<