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

Expressions regulars en Java

Embed Size (px)

Citation preview

EXPRESSIONS REGULARS

UF5 - ProgramacióXavier Sala Pujolar

Institut Cendrassos

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

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

del barça?

SI

Extreure’n contingut …

Resultat del barça?

Barça 2 Espanyol 1

o reemplaçar dades per unes altres

Canvia els esports per ART

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

Expressions

regulars en Java

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

Pattern

Matcher

PatternSyntaxException

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

replacefirst()

replaceAll()

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

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

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

Patró a reemplaçar

reemplaçament

Versió 1 - 2015