最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

怎么在Python的正則表達(dá)式中找到每個(gè)匹配的確切位置

 更新時(shí)間:2026年01月06日 11:04:27   作者:qq_25153359  
Python正則表達(dá)式是一種用于字符串匹配和操作的工具,它通過定義一系列的字符組合規(guī)則來實(shí)現(xiàn)對文本的查找、替換等操作,這篇文章主要介紹了怎么在Python的正則表達(dá)式中找到每個(gè)匹配的確切位置,需要的朋友可以參考下

簡介

re 模塊是我們在 Python 中用于正則表達(dá)式的模塊。文本搜索和更復(fù)雜的文本操作都使用正則表達(dá)式。grep 和 sed 等工具、vi 和 emacs 等文本編輯器以及 Tcl、Perl 和 Python 等計(jì)算機(jī)語言都具有內(nèi)置的正則表達(dá)式支持。

Python 中的 re 模塊提供用于匹配正則表達(dá)式的函數(shù)。

定義我們要查找或修改的文本的正則表達(dá)式稱為模式。文本文字和元字符組成了這個(gè)字符串。編譯函數(shù)用于創(chuàng)建模式。建議使用原始字符串,因?yàn)檎齽t表達(dá)式經(jīng)常包含特殊字符。(r 字符用于指示原始字符串。)字符在組裝成模式之前不會以這種方式解釋。

其中一個(gè)函數(shù)可用于在模式組合后將模式應(yīng)用于文本字符串??捎玫暮瘮?shù)包括 Match、search、find 和 finditer。

使用的語法

此處使用的正則表達(dá)式函數(shù)是:我們使用正則表達(dá)式函數(shù)查找匹配項(xiàng)。

  • re.match():確定 RE 是否在字符串開頭匹配。如果字符串開頭的零個(gè)或多個(gè)字符與正則表達(dá)式模式匹配,則 match 方法返回匹配對象。
  • p.finditer():查找 RE 匹配的所有子字符串并將它們作為迭代器返回。迭代器在字符串中為模式的所有非重疊匹配項(xiàng)提供匹配對象是 finditer 方法的結(jié)果。
  • re.compile():將正則表達(dá)式模式編譯為正則表達(dá)式對象,可以使用其 match()、search() 和下面描述的其他方法進(jìn)行匹配??梢酝ㄟ^指定標(biāo)志的值來修改表達(dá)式的行為。值可以是使用按位或(| 運(yùn)算符)組合的以下任何變量。
  • m.start():m.start() 返回匹配開始時(shí)字符串中的偏移量。
  • m.group():當(dāng) mo.groups() 返回一組值時(shí),您可以使用多重賦值方法將每個(gè)值分配給不同的變量,如下面的 areaCode, mainNumber = mo.groups() 行中所示。
  • search:它與 re.match() 類似,但不要求我們只在文本開頭查找匹配項(xiàng)。search() 函數(shù)可以在字符串中的任何位置定位模式,但它只返回模式的第一個(gè)實(shí)例。

算法

  • 使用 import re 導(dǎo)入 regex 模塊。

  • 使用 re.compile() 函數(shù)創(chuàng)建 Regex 對象。(記得使用原始字符串。)

  • 將要搜索的字符串傳遞給 Regex 對象的 finditer() 方法。這將返回一個(gè) Match 對象。

  • 調(diào)用 Match 對象的 group() 方法返回實(shí)際匹配文本的字符串。

  • 我們還可以使用 span() 方法獲取單個(gè)元組中的開始和結(jié)束索引。

示例

#importing re functions
import re
#compiling [A-Z0-9] and storing it in a variable p
p = re.compile("[A-Z0-9]")
#looping m times in p.finditer
for m in p.finditer('A5B6C7D8'):
#printing the m.start and m.group
   print m.start(), m.group()

輸出

這給出了輸出 -

0 A
1 5
2 B
3 6
4 C
5 7
6 D
7 8

代碼說明

使用 import re 導(dǎo)入 regex 模塊。使用 re.compile() 函數(shù)創(chuàng)建一個(gè) Regex 對象("[A-Z0-9]")并將其分配給變量 p。對 m 運(yùn)行循環(huán)并將要搜索的字符串傳遞到 Regex 對象的 finditer() 方法中。這將返回一個(gè) Match 對象。調(diào)用 Match 對象的 m.group() 和 m.start() 方法返回實(shí)際匹配文本的字符串。

示例

# Python program to illustrate
# Matching regex objects
# with groups
import re
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print(mo.groups())

輸出

這給出了輸出 -

('415', '555-4242')

代碼說明

使用 import re 導(dǎo)入 regex 模塊。使用 re.compile() 函數(shù)創(chuàng)建一個(gè) Regex 對象 (r'(\d\d\d)-(\d\d\d-\d\d\d\d)'),并將其賦值給變量 phoneNumRegex。將要搜索的字符串傳入 Regex 對象的 search() 方法,并將其存儲在變量 mo 中。這將返回一個(gè) Match 對象。調(diào)用 Match 對象的 mo.groups() 方法返回實(shí)際匹配文本的字符串。

結(jié)論

Python re 模塊提供的 search()、match() 和 finditer() 方法允許我們匹配正則表達(dá)式模式,如果匹配成功,它將提供 Match 對象實(shí)例。利用 start()、end() 和 span() 方法使用此 Match 對象檢索有關(guān)匹配字符串的詳細(xì)信息。

當(dāng)有許多匹配項(xiàng)時(shí),如果使用 findall() 加載所有匹配項(xiàng),則存在 RAM 過載的危險(xiǎn)。您可以以迭代器對象的形式獲取所有潛在匹配項(xiàng),而不是使用 finditer() 方法,這將提高效率。

這意味著 finditer() 提供了一個(gè)可調(diào)用對象,當(dāng)調(diào)用該對象時(shí),它會將結(jié)果加載到內(nèi)存中。

到此這篇關(guān)于在Python的正則表達(dá)式中找到每個(gè)匹配的確切位置的文章就介紹到這了,更多相關(guān)Python找到匹配的確切位置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

定结县| 瓮安县| 弥渡县| 调兵山市| 天镇县| 凤山县| 武功县| 瓦房店市| 德阳市| 喜德县| 澄迈县| 无棣县| 元谋县| 都江堰市| 晋中市| 玉田县| 噶尔县| 商河县| 余姚市| 盐池县| 张家川| 丘北县| 元江| 隆回县| 阿坝| 新丰县| 凭祥市| 镇平县| 怀集县| 科技| 肃南| 历史| 都安| 凭祥市| 马山县| 北海市| 抚宁县| 贞丰县| 新宁县| 宁城县| 玛沁县|