Zanurkuj w Pythonie/Analiza przypadku: Przetwarzanie numerów telefonów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 2:
== Analiza przypadku: Przetwarzanie numerów telefonów ==
 
Do tej pory koncentrowaliśmy się na dopasowywaniu całych wzorców. Albo pasował albo nie. Ale wyrażenia regularne są dużo potężniejsze. Gdy zostanie dopasowane, można wyciągnąć z niego wybrane kawałki i dzięki temu sprawdzić co gdzie zostało dopasowane.
So far you've concentrated on matching whole patterns. Either the pattern matches, or it doesn't. But regular expressions are much more powerful than that. When a regular expression does match, you can pick out specific pieces of it. You can find out what matched where.
 
Oto kolejny przykład z życia wzięty jaki kiedyś napotkałem: przetwarzanie amerykańskich numerów telefonów. Klient chciał móc wprowadzać numer w dowolnej formie w jednym polu, ale potem chciał żeby przechowywać oddzielnie numer kierunkowy, numer w dwóch częściach i opcjonalny numer wewnętrzny w bazie danych firmy. W Internecie znalazłem wiele takich wyrażeń regularnych, ale żadne z nich nie było aż tak mało restrykcyjne.
This example came from another real-world problem I encountered, again from a previous day job. The problem: parsing an American phone number. The client wanted to be able to enter the number free-form (in a single field), but then wanted to store the area code, trunk, number, and optionally an extension separately in the company's database. I scoured the Web and found many examples of regular expressions that purported to do this, but none of them were permissive enough.
 
Oto przykłady numerów telefonów jakie miał on akceptować:
Here are the phone numbers I needed to be able to accept:
* 800-555-1212
* 800 555 1212
Linia 17:
* work 1-(800) 555.1212 #1234
 
Całkiem duże zróżnicowanie! W każdym z przypadków musiałem wiedzieć jaki jest numer kierunkowy (800), pierwsza część numeru (555), druga (1212), a dla tych z numerem wewnętrznym także i on (1234).
Quite a variety! In each of these cases, I need to know that the area code was 800, the trunk was 555, and the rest of the phone number was 1212. For those with an extension, I need to know that the extension was 1234.
 
Spróbujmy rozwiązać ten problem. Poniższy przykład pokazuje pierwszy krok.
Let's work through developing a solution for phone number parsing. This example shows the first step.
 
'''Przykład 7.10. Odnajdywanie numerów'''