Zanurkuj w Pythonie/Rozwlekłe wyrażenia regularne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Fservant (dyskusja | edycje)
m Poprawione formatowanie kodu (w tym uzupełnione tłumaczenie) i logika komentarza do niego
Linia 16:
M{0,3} # tysiące - 0 do 3 M
(CM|CD|D?C{0,3}) # setki - 900 (CM), 400 (CD), 0-300 (0 do 3 C),
# lub 500-800 (D, a po nim 0 do 3 C)
(XC|XL|L?X{0,3}) # dziesiątki - 90 (XC), 40 (XL), 0-30 (0 do 3 X),
# orlub 50-80 (L, a po nim 0 do 3 X)
(IX|IV|V?I{0,3}) # jedności - 9 (IX), 4 (IV), 0-3 (0 do 3 I),
# lub 5-8 (V, a po nim 0 do 3 I)
Linia 31:
>>> re.search(pattern, 'M') #(4)
 
# Najważniejszą rzeczą o której należy pamiętać, gdy korzystamy z rozwlekłych wyrażeń regularnych jest to, że musimy przekazać dodatkowy argument: <code>re.VERBOSE</code>. Jest to stała zdefiniowana w module <code>re</code>, która sygnalizuje, że wyrażenie powinno być traktowane jako rozwlekłe. Jak widzimy, ten wzorzec ma mnóstwo białych znaków (które są ignorowane) i kilka komentarzy (które też są ignorowane). Gdy usuniemy białe znaki i komentarze, to pozostanie dokładnie to samo wyrażenie regularne, jakie otrzymaliśmy w poprzednim przykładzie, ale o wiele bardziejmniej czytelne. (Zauważmy, że co prawda łańcuch znaków posiada polskie znaki, ale nie tworzymy go w unikodzie, ponieważ i tak te znaki nie mają dla nas żadnego znaczenia, ponieważ są w komentarzach.)
# To dopasowuje początek łańcucha, potem jedno z trzech możliwych <tt>M</tt>, potem <tt>CM</tt>, <tt>L</tt> i trzy z trzech możliwych <tt>X</tt>, a następnie <tt>IX</tt> i koniec łańcucha.
# To dopasowuje początek łańcucha, potem trzy z trzech możliwych <tt>M</tt>, dalej <tt>D</tt>, trzy z trzech możliwych <tt>C</tt>, <tt>L</tt> z trzema możliwymi <tt>X</tt>, potem <tt>V</tt> z trzema możliwymi <tt>I</tt> i na koniec koniec łańcucha.