Upload
xavier-sala-pujolar
View
150
Download
1
Embed Size (px)
Citation preview
Una expressió regular és un patró que descriu una quantitat de text
cada dia les mateixes notícies
ES basa en les característiques comunes del text
Per definir expressions regulars es fa servir un llenguatge especial
No tots els llenguatges de programació tenen el
mateix
El de Java s’assembla al de
PERL
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Es pot definir una expressió regular amb un text
Cercarà els caràcters exactes
Expressió Regular
blau
Hi ha un operador per fer disjuncions
Expressió Regular
blau|taronja El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Un o l’altre
Es poden fer servir patrons
.
\d
\D
\w
\W
\s
\S
Un digit (0123456789)
Un caràcter no digit
Una lletra o un dígit
Ni lletra ni dígit
Un espai
Cap espai
Qualsevol cosa
[abc]Alguna lletra de dins
[^abc] Cap lletra de dins
[A-F]Una lletra de la A a la F
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Expressió Regular
bla..
Expressió Regular
[Eae]l\sExpressió Regular
\w\w\w\w\w\s
Es poden fer servir diferents quantificadors
a*
a+
a?
0 o més vegades
1 o més vegades
0 o 1 vegades
a{2,5}
a{2,}
a{5} 5 vegades
Entre 2 i 5 cops
almenys 2 cops
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Expressió Regular
\w{6,8}\s
Expressió Regular
d{2}
Els quantificadors poden tenir diferents comportaments
Ambiciós
Mandrós
Agafa el màxim que pot
Agafa el mínim que pot
Per defecte
S’afegeix un ?
Enganxós S’afegeix un +
El blau (del germànic "blau") és un dels tres colors primaris additius
(.*)blau
(.*?)blau
El blau (del germànic "
El_
amb el parèntesi es captura
El caràcter d’escapada es fa servir pels metacaràcters del llenguatge d’expressions regulars
\ En Strings \\
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Expressió Regular
blau \(Expressió Regular
\.
vull capturar el parèntesi
Hi ha símbols per marcar els extrems del patró
^Principi de la línia
$Final de la línia
\bSeparadors de paraules
\B No separadors
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Expressió Regular
\w+.$
Expressió Regular
^[eE]l
Els parèntesis es fan servir per fer grups de captures
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Expressió Regular
El (\w+) .* (\w+).
Després es podran recuperar
Els grups de captures no només es troben, també es recorden
El (\w+) .* (\w+).
blauGrup 1
taronjaGrup 2
Es pot cercar si hi ha grups repetits a partir del número de grup
El (\w+) .* \1
El blau (del germànic "blau") és un dels tres
colors primaris additius. Es considera un color fred
i oposat al taronja.
Número de grup
Pattern és un objecte que representa una expressió regular
Es crea cridant a un mètode compile
Pattern
Es crea a partir d’una expressió regular
Pattern P = Pattern.compile(“blau”);
Objecte
Expressió regular
El blau (del germànic "blau") és un dels tres colors primaris
additius. Es considera un color fred i oposat al taronja.
L’objecte Matcher cerca un patró en una cadena d’entrada
Blau?
String linia = “El color blau és bonic”;
Pattern P = Pattern.compile(“blau”);Matcher m = P.matcher(linia);
Objecte
On cercar
Matcher es crea a partir d’un Pattern
El Matcher permet comprovar si el patró hi és o no
find()
matches()El patró és igual
que el text?
El patró és dins del text?
lookingAt()
Des del principi
Pattern P = Pattern.compile(“blau”);Matcher m = P.matcher(linia);int compte = 0;while (m.find()) { compte++;}System.out.println(compte);
Cerca blau a ‘linia’ m.start()
i m.end() diuen on
Compta les vegades que surt la paraula blau
Es poden extreure dades a través dels grups
String line = "Color blau i vermell”;
Pattern pat = Pattern.compile("Color (\w+) i (\w+)");
Matcher mat = pat.matcher(line);
while (mat.find()) {
System.out.println("grup 1: " + mat.group(1));
System.out.println("grup 2: " + mat.group(2));
}
Si hi ha grups dins de grups es numeren pel parèntesi esquerra
((\w+) (\w+))
Filomeno Garcia
Filomeno Garcia
Filomeno
Garcia
Grup 1
Grup 2
Grup 3
Text
Expressió regular
Es poden remplaçar dades a través d’expressions regulars
String str = str.replaceAll("[0-9]", "X");
Patró a reemplaçar
reemplaçament
Hi ha webs per provar les expressions regulars abans d’usar-les
Visual Regex Tester
Regex Pal
Regex 101