To może być łatwe pytanie, ale nie mogę uzyskać wyniku, który chcę!znaleźć wszystkie cyfry między znak w python
Mam tekst jak ten poniżej:
text = 'To get to the destination follow this direction
1. First turn left and then
text text text
2. Secondly you have to some text here
some text here
For the second instruction follow the text below:
«1. some text some text some text
text text text.
2. some text some text text text text.
3. some text some text text text text.»'
używam regex w python i chcę uzyskać wszystkie numery między tymi postaciami „«”„»”, który jest 1. 2. i 3.
próbowałem coś takiego:
test = re.findall(r'[«.*?](\d+)[.*?»]', text, re.DOTALL)
lub to:
patt = re.findall(r'«.*?(\d+).*?»', text, re.DOTALL)
i wiele innych, ale żaden z nich nie zwraca tego, czego chcę. Co ja robię źle?
Oba wzory zwracają tylko cyfrę 1 bez żadnej innej cyfry. A co z liczbą 2 i 3?
Myślę, że musisz użyć wcześniejszego widoku i lookbehind, w przeciwnym razie '<' and '>' są tylko dopasowane raz, więc dostajesz tylko jedną liczbę. –
Jeśli używam uprzedzenia lub lookbehind, nie muszę konkretnie określać, ile znaków ma wyglądać za lub z wyprzedzeniem dla << and >> @tobias_k? – bettas
@Bettas dla lookbehind, tak jest w przypadku, tak, dla uprzedzenia - nie. Pracuję nad połączeniem wyprzedzania i przechwytywania grup, aby znaleźć dla ciebie rozwiązanie. Uzyskanie wielu wyników za pomocą pojedynczego ograniczenia nie jest łatwe w przypadku wyrażenia regularnego, łatwiej byłoby zrobić je z wieloma dopasowaniami po kolei. –