Jakub
P.
Python/Django
Developer
Temat: python reg ex wartość pomiedzy dwoma znakami
Spróbuj zu'([^z]*)z'
Mariusz
Marcinkiewicz
admin, programista,
pentester
Temat: python reg ex wartość pomiedzy dwoma znakami
Literka u na poczatku to jedynie oznaczenie (dodane przez Pythona w momencie wyswietlania stringu) informujace ze string zawiera znaki unicode. Natomiast Ty dodajesz to niepotrzebnie do regexpa i domyslam sie ze w tym tkwi caly problem.Prawidlowy regexp moglby wyglac np. tak:
" ([\d\s,]+) z"
Tomasz
Walotek
Programista
Python/PHP
Temat: python reg ex wartość pomiedzy dwoma znakami
Ja bym to zrobił tak:"(\d[\d\s]*,\d+)"
I tłumaczę:
\d - jedna cyfra (zaczynam od tego, żeby pominąć początkowe białe znaki)
[\d\s]* - zero lub więcej razy cyfra lub biały znak
, - przecinek
\d+ - co najmniej jedna cyfra
Jeśli istnieje możliwość, że kwoty będą bez części ułamkowej, to daj
"(\d[\d\s]*(?:,\d+)?)"
Dzięki temu fragment ",00" będzie opcjonalny :)
Edit: dodałem brakującą gwiazdkę w objaśnieniuTomasz Walotek edytował(a) ten post dnia 22.12.11 o godzinie 13:45
Michał Z. ɐʇsıɯɐɹƃoɹd
Temat: python reg ex wartość pomiedzy dwoma znakami
Czepiam się:Detal taki. Zamiast gwiazdki dałbym plusa."(\d[\d\s]*(?:,\d+)?)"
Łyknie ,15 - pytanie, czy tak być powinno, czy nie :)
Tomasz
Walotek
Programista
Python/PHP
Temat: python reg ex wartość pomiedzy dwoma znakami
Dlatego przed [\d\s]* jest samo \d żeby łyknął co najmniej jedną cyfrę. Niesłusznie się Pan czepiasz ;) Zrobiłem w ten sposób (zamiast po prostu [\d\s]+) w celu ominięcia początkowych spacji - wyjaśniłem to z resztą w nawiasie :)
Michał Z. ɐʇsıɯɐɹƃoɹd
Temat: python reg ex wartość pomiedzy dwoma znakami
Tomasz Walotek:
Dlatego przed [\d\s]* jest samo \d żeby łyknął co najmniej jedną cyfrę. Niesłusznie się Pan czepiasz ;) Zrobiłem w ten sposób (zamiast po prostu [\d\s]+) w celu ominięcia początkowych spacji - wyjaśniłem to z resztą w nawiasie :)
Zgadza się... mój błąd. :)
