Mam plik zawierający kilka ciągów takich jak "size = XXX;". Próbuję po raz pierwszy modułu Pythona i jestem nieco zdumiony następującym zachowaniem: jeśli użyję potoku dla "lub" w wyrażeniu regularnym, widzę tylko bit tego dopasowania. Np .:re.findall nie zwraca pełnego dopasowania?
>>> myfile = open('testfile.txt','r').read()
>>> print re.findall('size=50;',myfile)
['size=50;', 'size=50;', 'size=50;', 'size=50;']
>>> print re.findall('size=51;',myfile)
['size=51;', 'size=51;', 'size=51;']
>>> print re.findall('size=(50|51);',myfile)
['51', '51', '51', '50', '50', '50', '50']
>>> print re.findall(r'size=(50|51);',myfile)
['51', '51', '51', '50', '50', '50', '50']
Część "size =" zniknęła. (Mimo to jest z pewnością używany w wyszukiwaniu, w przeciwnym razie uzyskałoby więcej wyników). Co ja robię źle?
'(...)' definiuje grupę dopasowania. Możesz również użyć '(size = (50 | 51)), w którym będziesz miał dwie grupy dopasowań, z których pierwsza będzie pełna' size = 5X', a druga będzie tylko częścią '5X'. – korylprince