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

怎么在Python的正則表達式中找到每個匹配的確切位置

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

簡介

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

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

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

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

使用的語法

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

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

算法

  • 使用 import re 導入 regex 模塊。

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

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

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

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

示例

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

示例

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

結論

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

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

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

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

相關文章

最新評論

黄骅市| 龙口市| 莱芜市| 邢台县| 衡阳市| 太保市| 永平县| 泾源县| 治多县| 轮台县| 长春市| 张家川| 色达县| 镇康县| 东阳市| 东宁县| 杭州市| 襄汾县| 九龙县| 长宁县| 翁牛特旗| 禄丰县| 诸城市| 巍山| 富源县| 阜平县| 淮南市| 隆林| 讷河市| 德昌县| 金堂县| 西充县| 兖州市| 宜川县| 彭州市| 日照市| 苗栗市| 扎鲁特旗| 团风县| 绥芬河市| 榆林市|