Presentation is loading. Please wait.

Presentation is loading. Please wait.

Python re.findall('[a-z]+', text.lower())

Similar presentations


Presentation on theme: "Python re.findall('[a-z]+', text.lower())"— Presentation transcript:

1 Python re.findall('[a-z]+', text.lower())
Expresii regulate Python re.findall('[a-z]+', text.lower())

2 Mulțimea de fișiere textuale
În informatică, o expresie regulată, denumită pe scurt regex sau regexp (din engleză de la regular expression), reprezintă un șablon care descrie un limbaj regulat, adică o mulțime de șiruri de caractere generată de o gramatică regulată. Mulțimea de fișiere textuale .*\.txt Athanasiu, Irina; Raiciu, Diana; Sion, Radu; Mocanu, Irina (2002). Limbaje formale și automate. București: Matrix Rom

3 Cu ajutorul expresiilor regulate se poate de găsit sau înlocuit anumite părţi dintr-un text. Sunt o metodă puternică de verificare a adreselor de , domenii de internet sau coduri poştale. Un valid trebuie să se muleze pe un model prestabilit.  Mulțimea de adrese Athanasiu, Irina; Raiciu, Diana; Sion, Radu; Mocanu, Irina (2002). Limbaje formale și automate. București: Matrix Rom

4 Shell-ul Unix Următoarele construcţii în shell sunt pe post de expresii regulate: Orice caracter este o expresie regulată; excepţii sunt semnele de mai jos. Semnul ? ţine locul unui singur caracter, oricare ar fi el. Pentru a scrie chiar caracterul semn de întrebare trebuie să scriem \? Pentru a scrie semnul \ trebuie să scriem \\ Semnul de concatenare este omis. Aşa cum în matematică cîteodată omitem semnul de înmulţire, în shell nu scriem. Astfel, şirul a???b reprezintă toate cuvintele de cinci litere care încep cu a şi se termină cu b. Semnul * nu mai e un operator care se aplică unei expresii; el înseamnă un şir oarecare de zero sau mai multe caractere. Astfel, cînd scriem a*b asta înseamnă: toate şirurile care încep cu a şi se termină cu b. Alternanţa se reprezintă în felul următor:  {R,S,T}. Astfel, expresia {a,b}{c,d} reprezintă patru şiruri: ac, bc, ad, bd. Mihai Budiu, Expresii Regulatehttp://

5 Shell-ul Unix Exemple:
ls .??*  afişează (comanda ls) toate fişierele al căror nume începe cu semnul punct şi are cel puţin trei caractere rm *a*b* şterge toate fişierele care au un a şi un b în nume, în ordinea asta Mihai Budiu, Expresii Regulatehttp://

6 Shell-ul Unix grep - Get Regular Expression Patterns
Semnul . (punct) ţine locul oricărui caracter. Exemplu: a.b înseamnă orice cuvînt de trei litere care începe cu a şi se termină cu b. Parantezele se scriu astfel: \( şi \), şi se pot folosi pentru a schimba ordinea de aplicare a operaţiilor. Semnul de alternanţă este \|, ex. \(a\|b\)c reprezintă cuvintele ac şi bc. Caracterele speciale se prefixează cu \ pentru a fi exprimate; de exemplu, \* reprezintă chiar o steluţă.  [a-f] indica toate caracterele între a şi f, inclusiv: a,b,c,d,e,f.  [^a-f]  - toate caracterele care nu sunt între a şi f.  [acfz]  - unul dintre caracterele a, c, f sau z. Semnul ^ este începutul de linie. Semnul $ este sfîrşitul de linie. Semnul \? se aplică ca steluţa, după o expresie, şi înseamnă: expresia anterioară de zero sau una ori. De exemplu, expresia ab\(c\?\) reprezintă cuvintele ab şi abc. Expresia R repetată de două, trei sau patru ori, astfel: R\{2,4\}. De exemplu, expresia \(ab\)\{1,3\} descrie cuvintele ab, abab şi ababab. Mihai Budiu, Expresii Regulatehttp://

7 Shell-ul Unix grep - Get Regular Expression Patterns
Exemple: Mihai Budiu, Expresii Regulatehttp://

8 Perl Expresie Semnificaţie \
Următorul meta-caracter devine un caracter obişnuit ^ Început de linie . Orice caracter în afară de newline $ Sfîrşit de linie | Alternanţă () Indică precedenţa operaţiilor [] O mulţime de caractere (ca la grep) * Operatorul star: R* = R de zero sau mai multe ori la rînd + R+ = RR* (R cel puţin o dată) ?  (R de zero sau una ori) {n} R{n} = R exact de n ori {n,} R{n,} = R de cel puţin n ori {n,m} R{n,m} = R de cel puţin n dar cel mult m ori la rînd \t Caracterul tab \n Caracterul sfîrşit de linie R+ =  Athanasiu, Irina; Raiciu, Diana; Sion, Radu; Mocanu, Irina (2002). Limbaje formale și automate. București: Matrix Rom

9 Perl expression matches... abc
abc (that exact character sequence, but anywhere in the string) ^abc abc at the beginning of the string abc$ abc at the end of the string a|b either of a and b ^abc|abc$ the string abc at the beginning or at the end of the string ab{2,4}c an a followed by two, three or four b’s followed by a c ab{2,}c an a followed by at least two b’s followed by a c ab*c an a followed by any number (zero or more) of b’s followed by a c ab+c an a followed by one or more b’s followed by a c ab?c an a followed by an optional b followed by a c; that is, either abc or ac

10 Perl expression matches... abc
abc (that exact character sequence, but anywhere in the string) ^abc abc at the beginning of the string abc$ abc at the end of the string a|b either of a and b ^abc|abc$ the string abc at the beginning or at the end of the string ab{2,4}c an a followed by two, three or four b’s followed by a c ab{2,}c an a followed by at least two b’s followed by a c ab*c an a followed by any number (zero or more) of b’s followed by a c ab+c an a followed by one or more b’s followed by a c ab?c an a followed by an optional b followed by a c; that is, either abc or ac

11 (https://docs.python.org/2/library/re.html)
Python Expresiile regulate (modulul re ) sunt folosite pentru a căuta eficient șiruri de caractere într-un text.  ( >>> import re >>> print re.match(r"GR(.)?S", "GRIS") <_sre.SRE_Match at 0x7f37acd2c558>

12 Python Căutarea >>> import re
>>> m = re.search(r"Bienvenue chez (?P<chezqui>\w+) ! Tu as (?P<age>\d+) ans ?", "Bienvenue chez olivier ! Tu as 32 ans") >>> if m is not None: ... print m.group('chezqui') ... print m.group('age')

13 Python >>> import re
>>> m = re.search(r"Bienvenue chez (?P<chezqui>\w+) ! Tu as (?P<age>\d+) ans ?", "Bienvenue chez olivier ! Tu as 32 ans") >>> if m is not None: ... print m.group('chezqui') ... print m.group('age') ... olivier 32

14 Python Înlocuirea >>> print re.sub(r"Bienvenue chez (?P<chezqui>\w+) ! Tu as (?P<age>\d+) ans ?", r"\g<chezqui> a \g<age> ans", "Bienvenue chez olivier ! Tu as 32 ans") olivier a 32 ans

15 Python >>> import re
Caută toate >>> import re >>> re.findall("([0-9]+)", "Bonjour 111 Aurevoir 222")

16 Python >>> import re
>>> import re >>> re.findall("([0-9]+)", "Bonjour 111 Aurevoir 222") ['111', '222']

17 Python >>> import re
>>> text = "ana are 2 mere, primește 5, cumpără 10 și în final are 17." >>> re.findall(r"\d+", text)

18 Exemple: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

19 Mulează Mulează Mulează Nu mulează Mulează Mulează Mulează Mulează
1 2 3 4 5 6 7 8 9 10 Mulează Mulează Nu mulează Mulează Mulează Mulează Mulează Nu mulează Mulează Mulează 11 12 13 14 15 16 17 18 19 Mulează Nu mulează Mulează Mulează Mulează Mulează Mulează Nu mulează

20 valid >>> mails = >>> regex = >>> for mail in mails: ... if regex.match(mail) is not None: ... print "Ce mail : %s est valide" % mail ... else: ... print "Erreur ce mail : %s est non valide" % mail

21 valid >>> mails = >>> regex = >>> for mail in mails: ... if regex.match(mail) is not None: ... print "Ce mail : %s est valide" % mail ... else: ... print "Erreur ce mail : %s est non valide" % mail Ce mail : est valide Erreur ce mail : est non valide Ce mail : est valide Erreur ce mail est non valide Erreur ce mail : est non valide

22 Verificarea

23 Exemple Catwoman Batman The Tick Spider Man Black Cat Batgirl
Danger Girl Wonder Woman Luke Cage The Punisher Ant Man Dead Girl Aquaman SCUD Spider Woman Blackbolt Martian Manhunter

24 Exemple re.findall('man', text.lower()) Catwoman Batman The Tick
Spider Man Black Cat Batgirl Danger Girl Wonder Woman Luke Cage The Punisher Ant Man Dead Girl Aquaman SCUD Spider Woman Blackbolt Martian Manhunter re.findall('man', text.lower())

25 Exemple re.findall('a.a', text) Catwoman Batman The Tick Spider Man
Black Cat Batgirl Danger Girl Wonder Woman Luke Cage The Punisher Ant Man Dead Girl Aquaman SCUD Spider Woman Blackbolt Martian Manhunter re.findall('a.a', text)

26 Exemple re.findall(‘[A-Z][a-z]+\s[A-Z][a-z]+', text) Catwoman Batman
The Tick Spider Man Black Cat Batgirl Danger Girl Wonder Woman Luke Cage The Punisher Ant Man Dead Girl Aquaman SCUD Spider Woman Blackbolt Martian Manhunter re.findall(‘[A-Z][a-z]+\s[A-Z][a-z]+', text)

27 Exemple re.findall(‘[A-Z][a-z]+(\s[A-Z][a-z]+)?', text) Catwoman
Batman The Tick Spider Man Black Cat Batgirl Danger Girl Wonder Woman Luke Cage The Punisher Ant Man Dead Girl Aquaman SCUD Spider Woman Blackbolt Martian Manhunter re.findall(‘[A-Z][a-z]+(\s[A-Z][a-z]+)?', text)


Download ppt "Python re.findall('[a-z]+', text.lower())"

Similar presentations


Ads by Google