Top Banner
EXPRESSIONS REGULARS UF5 - Programació Xavier Sala Pujolar Institut Cendrassos
35

Expressions regulars en Java

Apr 15, 2017

Download

Education

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Expressions regulars en Java

EXPRESSIONS REGULARS

UF5 - ProgramacióXavier Sala Pujolar

Institut Cendrassos

Page 2: Expressions regulars en Java

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

Page 3: Expressions regulars en Java

Es poden fer servir per cercar en el text ... Ja hi ha el resultat

del barça?

SI

Page 4: Expressions regulars en Java

Extreure’n contingut …

Resultat del barça?

Barça 2 Espanyol 1

Page 5: Expressions regulars en Java

o reemplaçar dades per unes altres

Canvia els esports per ART

Page 6: Expressions regulars en Java

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

Page 7: Expressions regulars en Java

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

Page 8: Expressions regulars en Java

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

Page 9: Expressions regulars en Java

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

Page 10: Expressions regulars en Java

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

Page 11: Expressions regulars en Java

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

Page 12: Expressions regulars en Java

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}

Page 13: Expressions regulars en Java

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 +

Page 14: Expressions regulars en Java

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

Page 15: Expressions regulars en Java

El caràcter d’escapada es fa servir pels metacaràcters del llenguatge d’expressions regulars

\ En Strings \\

Page 16: Expressions regulars en Java

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

Page 17: Expressions regulars en Java

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

Page 18: Expressions regulars en Java

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

Page 19: Expressions regulars en Java

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

Page 20: Expressions regulars en Java

Els grups de captures no només es troben, també es recorden

El (\w+) .* (\w+).

blauGrup 1

taronjaGrup 2

Page 21: Expressions regulars en Java

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

Page 22: Expressions regulars en Java

Expressions

regulars en Java

Page 23: Expressions regulars en Java

En Java el suport està definit a java.util.regex

Pattern

Matcher

PatternSyntaxException

Page 24: Expressions regulars en Java

Pattern és un objecte que representa una expressió regular

Es crea cridant a un mètode compile

Pattern

Page 25: Expressions regulars en Java

Es crea a partir d’una expressió regular

Pattern P = Pattern.compile(“blau”);

Objecte

Expressió regular

Page 26: Expressions regulars en Java

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?

Page 27: Expressions regulars en Java

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

Page 28: Expressions regulars en Java

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

Page 29: Expressions regulars en Java

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

Page 30: Expressions regulars en Java

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));

}

Page 31: Expressions regulars en Java

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

Page 32: Expressions regulars en Java

replacefirst()

replaceAll()

També hi ha mètodes per canviar l’entrada

Page 33: Expressions regulars en Java

Es poden remplaçar dades a través d’expressions regulars

String str = str.replaceAll("[0-9]", "X");

Patró a reemplaçar

reemplaçament

Page 35: Expressions regulars en Java

Versió 1 - 2015