Regex: Caractere ce se repeta si Cuvinte din aceasi familie

postat acum 2 ani de Stefanescu Mihai in categorie Regular Expressions

In acest articol am sa presupun ca dorim sa cautam un cuvant in care poate varia o anumita litera, sa luam exemplul de mai jos:

invat
invaaaat
invaaaaaaaaaaat
invaaaaaaaaaaaaaaaaaaat
invaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat

Ce putem face pentru a selecta toate aceste versiuni ale cuvantului?
Putem face un regex care va cauta cuvantul initial si-l va gasi chiar daca o anumita litera se repeta de mai multe ori:

Destul de simplu, nu? Hai sa va invat cum sa faceti acest lucru intr-un mod si mai simplu. Trebuie doar sa adaugati un + dupa caracterul ce este posibil sa se repete de mai multe ori:

Cuvinte din aceasi familie

Acum am sa va vorbesc despre gasirea cuvintelor cu aceasi radacina.
Pentru inceput trebuie sa luam o familie de cuvinte cu aceasi radacina:

invat
invatam
invatasem

Se poate observa foarte simplu ca radacina este invat, din care vin derivatele invatam si invatasem.
In acest caz, ca si in cazul de mai sus putem face acest lucru in 2 moduri:
Putem cauta radacina urmata de orice alte 0 sau mai multe caractere:

invat(.*)

Sau putem cauta radacina urmata de una dintre terminatiile dorite:

invat(am|asem)?

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!