Cześć, mam taki problem z wyrażeniami regularnym w Pythonie.
Z większego tekstu chce znaleźć wszystkie takie przypadki, gdzie po AB szukam pierwszego CD, a następnie chce pobrać całą zawartość aż do pierwszego EF.
Np. dla ABaaaaCDbbbbEFzxyCDccccEFxyzABddddCDeeeeEF Tutaj wynikiem byłoby ['bbbb', 'eeee']
Moje rozwiązanie reg_exp = r'AB.*CD(.*)EF' z fukcją findall zwraca tylko 'eeee'
Tutaj cały kod: import re
var = 'ABaaaaCDbbbbEFzxyCDccccEFxyzABddddCDeeeeEF' reg_exp = r'AB.*CD(.*)EF' res = re.findall(reg_exp, var)
@Re_mi: musisz uzyc non greedy operatora zeby nie matchowal do konca (czyli .*? w tym przypadku), poza tym to co po AB musi tez byc w nawiasach zeby bylo zapisane jako grupa
mam taki problem z wyrażeniami regularnym w Pythonie.
Z większego tekstu chce znaleźć wszystkie takie przypadki, gdzie po AB szukam pierwszego CD, a następnie chce pobrać całą zawartość aż do pierwszego EF.
Np. dla ABaaaaCDbbbbEFzxyCDccccEFxyzABddddCDeeeeEF
Tutaj wynikiem byłoby ['bbbb', 'eeee']
Moje rozwiązanie reg_exp = r'AB.*CD(.*)EF' z fukcją findall zwraca tylko 'eeee'
Tutaj cały kod:
import re
var = 'ABaaaaCDbbbbEFzxyCDccccEFxyzABddddCDeeeeEF'
reg_exp = r'AB.*CD(.*)EF'
res = re.findall(reg_exp, var)
print(res)
#programowanie #python
? - dzięki temu znakowi twoje wyrażenia będą szukały najkrótszego możliwego rozwiązania, domyślnie .* będzie szukał najdłuższego.
.*?w tym przypadku), poza tym to co po AB musi tez byc w nawiasach zeby bylo zapisane jako grupaAB.*?CD(.*?)EFimport re
var = 'ABaaaaCDbbbbEFzxyCDccccEFxyzABddddCDeeeeEF'
regexp = r"(AB.*?)CD((.*?)EF)"
res = re.findall(regexp, var)
for x in res:
print (x[2])
Polecam stronkę -> https://regex101.com/