[英]python regex: extract list elements, each of which matches multiple patterns
[英]How to make python regex which matches multiple patterns to same index
是否可以獲得所有重疊匹配,它們從相同的索引開始,但來自不同的匹配組?
例如,當我從“ABC”正則表達式中查找模式“(A)|(AB)”時,應該返回以下匹配項:
(0,"A") 和 (0,"AB")
對於一種可能性,請參閱 Evpok 的答案。 您的問題的第二種解釋可能是您希望同時匹配來自同一個 position 的所有模式。 在這種情況下,您可以使用前瞻表達式。 例如正則表達式
(?=(A))(?=(AB))
將為您提供所需的結果(即兩種模式與組匹配的所有位置)。
更新:通過額外的說明,這仍然可以使用單個正則表達式來完成。 您只需將上面的兩個組都設為可選,即
(?=(A))?(?=(AB))?(?:(?:A)|(?:AB))
不過我不建議這樣做。 您可以更輕松地分別查找每個模式,然后再加入結果。
string = "AABAABA"
result = [(g.start(), g.group()) for g in re.compile('A').finditer(string)]
result += [(g.start(), g.group()) for g in re.compile('AB').finditer(string)]
我明白了,雖然我不記得在哪里或從誰那里
def myfindall(regex, seq):
resultlist = []
pos = 0
while True:
result = regex.search(seq, pos)
if result is None:
break
resultlist.append(seq[result.start():result.end()])
pos = result.start() + 1
return resultlist
它返回所有(甚至重疊)匹配的列表,每個索引的匹配限制不超過一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.