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.
Znak | Kaj to naredi? | Primer | Zadetki |
---|---|---|---|
^ | Ujema se z začetkom vrstice | ^ abc | abc, abcdef .., abc123 |
$ | Ujema se s koncem vrstice | abc $ | moje: abc, 123abc, theabc |
. | Ujemanje z vsakim znakom | ac | abc, asg, a2c |
| | ALI operater | abc | xyz | abc 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 * c | abc, abbcc, abcdc |
+ | Znak se ujema pred + eno ali večkrat | a + c | ac, aac, aaac, |
? | Ujema se z znakom pred? nič ali enkrat. Uporablja se tudi kot pohlepno ujemanje | ab? c | ac, abc |
\ | Izpustite znak po poševni poševnici ali ustvarite zaporedje pobega. | a | ac |
Izpusti znake (zaporedje pobega)
Opomba: znaki za izhod v sili so občutljivi na velike in male črke.
Znak | Kaj 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 () [] {} ^ $. | * +? \ |
0 | Ničnost |
a | Ujemite zvon ali alarm. |
b | Beseda meja v večini ali v vračalki |
B | Brez besedne meje |
d | Ujemanje vseh decimalnih števk (0-9) |
D | Ujemanje z vsemi številkami |
e | Ujemite pobeg |
f | Ujemite obliko vira |
n | Ujemite novo vrstico |
Q ... E | Ne upošteva posebnega pomena v tem, kar se ujema. |
r | Ujemite povratek nosilca |
s | Ujema se s presledkom (presledek, \ t |
S | Ujema se z vsakim ne-belim presledkom |
. \ t | Ujemanje z zavihkom |
v | Ujemanje z navpično kartico |
w | Ustreza vsakemu besednemu znaku [a-zA-Z_0-9] |
W | Ustreza vsakemu ne-besednemu znaku |
Oznake za regularni izraz
Zunaj regularnega izraza (na koncu) lahko uporabite zastavice za pomoč pri ujemanju vzorcev.
Znak | Kaj to naredi? |
---|---|
jaz | Ignoriraj primer (dovoljena je velika in mala pisava) |
m | Ujemanje z več vrsticami |
s | Ujemaj nove vrstice |
x | Dovoli presledke in komentarje |
J | Dvojna imena skupin so dovoljena |
U | Nelagodno 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