簡體   English   中英

如何獲得此正則表達式包括重疊的出現,但不要太多:-?

[英]How to get this regex include overlapping occurrences, but not too much:-?

我想獲得模式'[number]'的所有出現,包括它們的上下文,但是我不能。

這是我的代碼:

import re
text = 'some crap [00][0] some more'
regex = r'\[[0-9]*\]'
regex = '.{0,10}' + regex + '.{0,10}'
occurrences = re.findall(regex, text)
for occ in occurrences print(occ)

到底有什么問題!?

我的代碼在任何情況下都可以按我希望的方式工作,除了兩個[number]塊之間的字符少於10個時。 在尋找兩個結果的同時,我的代碼給了我一個結果。 如果我將正則表達式設置為包括重疊出現的內容,那么它將給出針對不同上下文長度的所有結果。 我不能專門設置上下文長度,因為我想在字符串的開頭和結尾都包含出現的內容。

我真正想要的是:

我更喜歡純正則表達式解決方案,以使我了解所提及模式的所有出現情況,包括其上下文。

如果真的不可能,我會用一個使用位置並從字符串中選擇范圍的解決方案做得很好。

閱讀有關非捕獲組否定前瞻的信息

要解決您的問題,只需將第四行更改為:

regex = '(?:(?!' + regex + ').){0,10}' + regex + '(?:(?!' + regex + ').){0,10}'

暫無
暫無

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

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