[英]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.