Regex

Kort for vanlig uttrykk , til regex er en tekststreng som lar deg lage mønstre som hjelper deg med å matche, finne og administrere tekst. Perl er et godt eksempel på en programmeringsspråk som bruker vanlige uttrykk. Det er imidlertid det eneste av de mange stedene du kan finne vanlige uttrykk. Regulære uttrykk kan også brukes fra kommandolinjen og i tekstredigerere for å finne tekst i en fil.

Når du først prøver å forstå vanlige uttrykk, virker det som om det er et annet språk. Å beherske regulære uttrykk kan imidlertid spare deg for tusenvis av timer hvis du jobber med tekst eller trenger å analysere store mengder data. Nedenfor er et eksempel på et vanlig uttrykk med hver av komponentene merket. Dette regulære uttrykket vises også i programmeringseksemplene til Perl som vises senere på denne siden.

Vanlig uttrykk

Grunnleggende om vanlige uttrykk (jukseark)

Å se på eksemplet ovenfor kan være overveldende. Når du først har forstått den grunnleggende syntaksen for hvordan kommandoer for regulære uttrykk fungerer, kan du lese eksemplet ovenfor som om du leser denne setningen. Dessverre bruker ikke alle programmer, kommandoer og programmeringsspråk de samme vanlige uttrykkene, men de har alle likheter.

Karakter Hva gjør den? Eksempel Fyrstikker
^ Matcher begynnelsen på linjen ^ abc abc, abcdef .., abc123
$ Fyrstikker slutten av linjen abc $ min: abc, 123abc, theabc
. Match alle karakterer a.c. abc, asg, a2c
| ELLER operatør abc | xyz abc eller xyz
(...) Fang opp alt som samsvarer (a) b (c) Fanger 'a' og 'c'
(?: ...) Ikke-fangende gruppe (a) b (?: c) Fanger 'a', men bare grupper 'c'
[...] Matcher alt som finnes i braketter [abc] a, b eller c
[^ ...] Matcher alt som ikke er i parentes [^ abc] xyz, 123, 1de
[a-z] Matcher alle tegn mellom 'a' og 'z' [b-z] bc, sinn, xyz
{x} Det nøyaktige antall ganger x må matches (abc) {2} abcabc
{x,} Match 'x' antall ganger eller mer (abc) {2,} abcabc, abcabcabc
{x, y} Match mellom 'x' og 'y' ganger. (a) {2,4} aa, aaa, aaaaa
* Grådig kamp som matcher alt i stedet for * ab * c abc, abbcc, abcdc
+ Matcher tegnet før + en eller flere ganger a + c ac, aac, aaac,
? Matcher karakteren før? null eller en gang. Også brukt som en ikke-grådig kamp ab? c ac, abc
Unnslippe karakteren etter tilbakeslaget eller opprett en rømningssekvens . a sc a c

Rømningsfigurer (rømningssekvens)

Merk



Escape-tegn er store og små bokstaver.

Karakter Hva gjør den?
Alle tegn som ikke er nevnt nedenfor foran med vil bli unnslippe. For eksempel, . samsvarer med en periode og utfører ikke funksjonen som er nevnt ovenfor. Tegn som skal unnslippes er () [] {} ^ $. | * +?
0 Null karakter.
il I Perl , a er en bjelle eller alarm og brukes ikke i vanlige uttrykk.
TIL Match starten på en streng med flere linjer.
b Ordgrense i det meste eller baksiden.
B Ikke-ordgrense.
d Match et hvilket som helst desimaltall (0-9).
D Match alle ikke-sifre.
er Match en flukt.
f Match en skjema feed.
n Match a ny linje .
Q ... E Ignorer noen spesiell betydning i det som blir matchet.
r Match en vognretur.
s Kamper a rom tegn (mellomrom, t, r, n).
S Matcher alle tegn som ikke er mellomrom.
t Match a fanen.
v Match en vertikal fane.
i Matcher hvilket som helst ordtegn ([a-zA-Z_0-9]).
I Matcher et tegn som ikke er ord.

Vanlige uttrykk flagg

Utenfor det vanlige uttrykket (på slutten) hjelper flaggene med mønstermatchingen.

Karakter Hva gjør den?
Jeg Ignorer saken ( stor bokstav og små bokstaver tillatt).
m Multilinjekamp.
s Match nye linjer.
x Tillat mellomrom og kommentarer.
J Dupliserte gruppenavn er tillatt.
U Urolig kamp.

Perl programmeringsspråk regulære uttrykk eksempler

Nedenfor er noen eksempler på regulære uttrykk og mønstermatching i Perl. Mange av disse eksemplene er lik eller det samme som andre programmeringsspråk og programmer som støtter vanlige uttrykk.

hvordan du forteller hvilken type hovedkort du har
$data =~ s/bad data/good data/i;

Ovennevnte eksempel erstatter alle 'dårlige data' med 'gode data' ved hjelp av a store og små bokstaver kamp. Så hvis $ data variabel var 'Her er dårlige data', det ville blitt 'Her er gode data'.

$data =~ s/a/A/;

Dette eksemplet erstatter små bokstaver til med store bokstaver TIL . Så hvis $ data var 'eksempel', ville det bli 'exAmple'.

$data =~ s/[a-z]/*/;

Ovennevnte eksempel erstatter enhver liten bokstav, a til z, med en stjerne. Så hvis $ data var 'Eksempel', ville det bli 'E ******'.

$data =~ s/e$/es/;

Dette eksemplet bruker $ -tegnet, som forteller det regulære uttrykket å matche teksten før det på slutten av strengen. Så hvis $ data var 'eksempel', ville det bli 'eksempler'.

$data =~ s/./!/;

I eksemplet ovenfor erstatter vi a periode med en utropstegn . Fordi perioden er en metakarakter hvis du bare skrev inn en periode uten ( flukt ) det blir behandlet som en hvilken som helst karakter. I dette eksemplet, hvis $ data var 'eksempel'. det ville bli 'eksempel!', men hvis du ikke hadde unnslippe, ville det erstatte hver karakter og bli '!!!!!!!!'

$data =~ s/^e/E/;

Til slutt, i dette eksemplet ovenfor Nei (^) forteller det regulære uttrykket å matche noe i begynnelsen av linjen. I dette eksemplet erstattes enhver liten 'e' i begynnelsen av linjen med store bokstaver 'E.' Derfor, hvis $ data var 'eksempel', ville det bli 'eksempel'.

Tips

Hvis du vil utforske vanlige uttrykk enda mer i kommandoer som grep , eller regulære uttrykk i programmeringsspråk, sjekk ut O'Reilly-boken 'Mastering regular expressions.'