簡體   English   中英

Python正則表達式:在句子中重復匹配模式

[英]Python regex: Matching pattern repeatedly within a sentence

我有一個形式的表達

some_text_0 pattern_instance_1 some_text_1 pattern_instance_2 some_text_2 pattern_instance_3 some_text_3 ..

其中每個pattern_instancePATTERN一個實例,

我想將其提取為[pattern_instance_1, some_text_1], [pattern_instance_2, some_text_2], ... (刪除第一個some_text_0 )。

做這個的最好方式是什么 ?

作為一個更具體的案例,我試圖匹配類似的東西

Things I need to buy: 1 banana two apples three pears zero kiwis

進入

[1, banana][two, apples] ,..

我已經有了匹配數字的正則表達式,但它相當復雜。 我發現的少數解決方案似乎涉及否定此正則表達式以對某些文本進行匹配,但我想知道是否還有另一種方法,因為我不確定如何否定我的正則表達式。 我也嘗試玩re.find_all()但無法讓它工作。

這就是我將如何處理它...

  1. re.finditer會給你一個 MatchObjects 列表

  2. 每個 MatchObject 都有start函數,它為您提供模式的第一個索引。 end() 函數是類比的。

  3. 然后,剩下的唯一事情就是構建元組。

    • 通過檢索 start() 和 end() 索引之間的文本來創建第一個元素。
    • 通過檢索此 MatchObject 的 end() 和下一個 MatchObject 的 start() 之間的文本(或直到字符串的末尾,如果這是最后一個 MatchObject)來創建第二個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM