Python re.findall('[a-z]+', text.lower()) Expresii regulate Python re.findall('[a-z]+', text.lower())
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
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 e-mail, domenii de internet sau coduri poştale. Un e-mail valid trebuie să se muleze pe un model prestabilit. Mulțimea de email adrese [a-zA-Z0-9]+@[a-z]+(\.[a-z]+)*\.([a-z]{2,}) Athanasiu, Irina; Raiciu, Diana; Sion, Radu; Mocanu, Irina (2002). Limbaje formale și automate. București: Matrix Rom
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://www.cs.cmu.edu/~mihaib/articles/regex/regex-html.html
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://www.cs.cmu.edu/~mihaib/articles/regex/regex-html.html
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://www.cs.cmu.edu/~mihaib/articles/regex/regex-html.html
Shell-ul Unix grep - Get Regular Expression Patterns Exemple: Mihai Budiu, Expresii Regulatehttp://www.cs.cmu.edu/~mihaib/articles/regex/regex-html.html
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
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
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
(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. (https://docs.python.org/2/library/re.html) >>> import re >>> print re.match(r"GR(.)?S", "GRIS") <_sre.SRE_Match at 0x7f37acd2c558>
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') http://apprendre-python.com/page-expressions-regulieres-regular-python
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
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
Python >>> import re Caută toate >>> import re >>> re.findall("([0-9]+)", "Bonjour 111 Aurevoir 222")
Python >>> import re >>> import re >>> re.findall("([0-9]+)", "Bonjour 111 Aurevoir 222") ['111', '222']
Python >>> import re >>> text = "ana are 2 mere, primește 5, cumpără 10 și în final are 17." >>> re.findall(r"\d+", text)
Exemple: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 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ă
Email valid >>> mails = ["olivier@mailbidon.com", "olivier@mailbidon.ca", "8@mailbidon.com", "@mailbidon.com", "olivier@mailbidon"] >>> regex = re.compile(r"^[a-z0-9._-]+@[a-z0-9._-]+\.[(com|fr)]+" >>> 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
Email valid >>> mails = ["olivier@mailbidon.com", "olivier@mailbidon.ca", "8@mailbidon.com", "@mailbidon.com", "olivier@mailbidon"] >>> regex = re.compile(r"^[a-z0-9._-]+@[a-z0-9._-]+\.[(com|fr)]+" >>> 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 : olivier@mailbidon.com est valide Erreur ce mail : olivier@mailbidon.ca est non valide Ce mail : 8@mailbidon.com est valide Erreur ce mail : @mailbidon.com est non valide Erreur ce mail : olivier@mailbidon est non valide
Verificarea http://pythex.org/
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
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())
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)
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)
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)