簡體   English   中英

使用Lookahead的Python正則表達式findall

[英]Python regular expression findall using Lookahead

我是正則表達式的新手,想了解如何使用findall()lookahead查找字符串中給定模式的所有出現情況。 我在替換字符時遇到問題。 這是我想要的示例:

s = 'ababa4abaab'
p = 'aba'
print([ s[i:i+len(p)] for i in range(len(s)) if s[i:i+len(p)]==p])
['aba', 'aba', 'aba']

這是我對findall()的嘗試:

import re
re.findall('aba', 'ababa4abaab')
['aba', 'aba']

它只返回2個匹配項,但我希望所有三個匹配項。 我閱讀了教程,但不太了解。 我試過了

re.findall('(?=aba)', 'ababa4abaab')
['', '', '']

有人可以告訴我在這種情況下如何使用該超前概念,並簡要說明其工作原理嗎?

我認為您只需要在其中搜索“ ab”和“ a”之后,就不必將其捕獲為“ aba”,您可以使用以下代碼:

ab(?=a)

這將給您3個匹配項。

您還可以將其捕獲到一個組中,然后對其進行迭代並連接“ a”,以便為每個匹配項以所需的文本“ aba”結尾

 (ab(?=a))

關於findall的官方文檔說

“返回字符串中所有不重疊匹配項的列表。”

暫無
暫無

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

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