Kaj je Regex (regularni izraz)?

Kratica za regularni izraz je regularni izraz, ki je niz besedila, ki vam omogoča ustvarjanje vzorcev, ki pomagajo ujemati, poiskati in upravljati besedilo. Perl je odličen primer programskega jezika, ki uporablja regularne izraze. Vendar pa je to edino mesto, kjer lahko najdete pravilne izraze. Redne izraze lahko uporabite tudi iz ukazne vrstice in v urejevalnikih besedil, da bi našli besedilo v datoteki.

Pri prvem poskusu razumevanja regularnih izrazov se zdi, kot da je drugačen jezik. Vendar pa vam obvladovanje regularnih izrazov lahko prihrani na tisoče ur, če delate z besedilom ali morate razčleniti velike količine podatkov. Spodaj je primer regularnega izraza, pri katerem je vsaka njena komponenta označena. Ta regularni izraz je prikazan tudi v primerih programiranja Perl, ki so prikazani pozneje na tej strani.

Osnove regularnih izrazov (goljufija)

Če pogledamo zgornji primer, je to lahko zelo veliko. Vendar, ko razumete osnovno sintakso delovanja ukazov regularnih izrazov, lahko preberete zgornji primer, kot če berete ta stavek. Na žalost vsi programi, ukazi in programski jeziki ne uporabljajo enakih regularnih izrazov, vendar vsi delijo podobnosti.

ZnakKaj to naredi?PrimerZadetki
^Ujema se z začetkom vrstice^ abcabc, abcdef .., abc123
$Ujema se s koncem vrsticeabc $moje: abc, 123abc, theabc
.Ujemanje z vsakim znakomacabc, asg, a2c
|ALI operaterabc | xyzabc ali xyz
(...)Zajemite vse, kar se ujema(a) b (c)Zajema »a« in »c«
(?: ...)Skupina brez posnetka(a) b (?: c)Zajema »a«, vendar samo skupine »c«
[...]Ujema se z vsem, kar je v oklepajih[abc]a, b ali c
[^ ...]Ujema se z vsem, kar ni v oklepajih[^ abc]xyz, 123, 1de
[az]Ujema z vsemi znaki med »a« in »z«[bz]bc, um, xyz
{x}Natančno število x, ki se ujema(abc) {2}abcabc
{x, }Število x ali več ujemanja(abc) {2, }abcabc, abcabcabc
{x, y}Ujemanje med časoma »x« in »y«.(a) {2, 4}aa, aaa, aaaaa
*Pohlepna tekma, ki se ujema z vsem namesto *ab * cabc, abbcc, abcdc
+Znak se ujema pred + eno ali večkrata + cac, aac, aaac,
?Ujema se z znakom pred? nič ali enkrat. Uporablja se tudi kot pohlepno ujemanjeab? cac, abc
\Izpustite znak po poševni poševnici ali ustvarite zaporedje pobega.aac

Izpusti znake (zaporedje pobega)

Opomba: znaki za izhod v sili so občutljivi na velike in male črke.

ZnakKaj to naredi?
\Vsak znak, ki ni naveden spodaj, pred katerim se bo pojavil, bo ušel. Na primer: \ t se ujema z obdobjem in ne opravlja zgoraj navedene funkcije. Znaki, ki jih je treba ujeti, so () [] {} ^ $. | * +? \
0Ničnost
aUjemite zvon ali alarm.
bBeseda meja v večini ali v vračalki
BBrez besedne meje
dUjemanje vseh decimalnih števk (0-9)
DUjemanje z vsemi številkami
eUjemite pobeg
fUjemite obliko vira
nUjemite novo vrstico
Q ... ENe upošteva posebnega pomena v tem, kar se ujema.
rUjemite povratek nosilca
sUjema se s presledkom (presledek, \ t
SUjema se z vsakim ne-belim presledkom
. \ tUjemanje z zavihkom
vUjemanje z navpično kartico
wUstreza vsakemu besednemu znaku [a-zA-Z_0-9]
WUstreza vsakemu ne-besednemu znaku

Oznake za regularni izraz

Zunaj regularnega izraza (na koncu) lahko uporabite zastavice za pomoč pri ujemanju vzorcev.

ZnakKaj to naredi?
jazIgnoriraj primer (dovoljena je velika in mala pisava)
mUjemanje z več vrsticami
sUjemaj nove vrstice
xDovoli presledke in komentarje
JDvojna imena skupin so dovoljena
UNelagodno tekmo

Primeri regularnih izrazov programskega jezika Perl

Spodaj je nekaj primerov regularnih izrazov in ujemanja vzorcev v Perlu. Mnogi od teh primerov so podobni ali enaki drugim programskim jezikom in programom, ki podpirajo regularne izraze.

 $ data = ~ s / slabi podatki / dobri podatki / i; 

Zgornji primer nadomešča vse "slabe podatke" z "dobrimi podatki" s pomočjo ujemanja, ki ne upošteva velikih in malih črk. Torej, če bi bila spremenljivka $ data "Here is bad data", bi postala "Here is good data".

 $ data = ~ s / a / A /; 

Ta primer zamenja vsako malo črko a z veliko A. Torej, če je bil $ data "primer", bi postal "exAmple".

 $ data = ~ s / [az] / * /; 

Zgornji primer nadomesti vsako malo črko, od a do z, z zvezdico. Torej, če je $ data "Primer", postane "E ******".

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

Ta primer uporablja znak $, ki regularnemu izrazu pove, da se ujema z besedilom pred njim na koncu niza. Torej, če bi bila $ data "primer", bi postala "primeri".

 $ data = ~ s / 

V zgornjem primeru zamenjamo obdobje s klicajem. Ker je obdobje meta-znak, če ste vnesli samo obdobje brez (izhod), se obravnava kot katerikoli znak. V tem primeru, če je $ data »primer«. postalo bi "primer!", če pa ne bi ubežal, bi zamenjal vsak lik in postal "!!!!!!!!"

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

Nazadnje, v zgornjem primeru karta (^) pravi regularnemu izrazu, da se ujema z vsem na začetku vrstice. V tem primeru bi se to ujemalo z vsako malo črko e na začetku vrstice in jo nadomestilo z glavno E. Zato, če bi bil $ data "primer", bi postal "Primer".

Nasvet: Če želite raziskati regularne izraze še bolj v ukazih, kot so grep, ali regularni izrazi v programskem jeziku, preverite knjigo O'Reilly "Mastering regular izrazov".

Računalniški akronimi, zaporedje Escape, izraz, glob, meta-karakter, programski izrazi, Tilde, nadomestni znak