Regex

Lyhenne jstk tavallinen ilme , regex on tekstijono, jonka avulla voit luoda kuvioita, jotka auttavat vastaamaan, etsimään ja hallitsemaan tekstiä. Perl on loistava esimerkki a ohjelmointikieli joka käyttää säännöllisiä lausekkeita. Se on kuitenkin vain yksi monista paikoista, joista löydät säännöllisiä lausekkeita. Säännöllisiä lausekkeita voidaan käyttää myös komentoriviltä ja tekstieditorissa tekstin etsimiseen tiedostosta.

Kun yrität ensin ymmärtää säännöllisiä lausekkeita, näyttää siltä, ​​että se olisi eri kieli. Säännöllisten lausekkeiden hallitseminen voi kuitenkin säästää tuhansia tunteja, jos työskentelet tekstin kanssa tai jos sinun on jäsennettävä suuria määriä tietoja. Alla on esimerkki säännöllisestä lausekkeesta, jonka kaikki komponentit on merkitty. Tämä säännöllinen lauseke näkyy myös Perlin ohjelmointiesimerkeissä, jotka on esitetty myöhemmin tällä sivulla.



Tavallinen ilme

Säännöllisten lausekkeiden perusteet (huijausarkki)

Yllä olevan esimerkin tarkastelu voi olla ylivoimainen. Kuitenkin, kun ymmärrät säännöllisen lausekkeen komentojen toiminnan syntaksin, voit lukea yllä olevan esimerkin ikään kuin luet tätä lausetta. Valitettavasti kaikki ohjelmat, komennot ja ohjelmointikielet eivät käytä samoja säännöllisiä lausekkeita, mutta niillä kaikilla on yhtäläisyyksiä.

Merkki Mitä se tekee? Esimerkki Ottelut
^ Vastaa rivin alkua ^ abc abc, abcdef .., abc123
$ Ottelut rivin loppu abc $ minun: abc, 123abc, theabc
. Yhdistä mikä tahansa merkki a.c abc, asg, a2c
| TAI operaattori abc | xyz abc tai xyz
(...) Sieppaa kaikki sopivat (a) b (c) Sieppaa 'a' ja 'c'
(?: ...) Sieppaamaton ryhmä (a) b (?: c) Sieppaa 'a', mutta vain ryhmittelee 'c'
[...] Sopii mihin tahansa suluissa [abc] a, b tai c
[^ ...] Vastaa kaikkea, jota ei ole suluissa [^ abc] xyz, 123, 1de
[a-z] Vastaavat kaikki a- ja z-merkit [b-z] bc, mieli, xyz
{x} Tarkka x-määrä vastaavia kertoja (abc) {2} abcabc
{x,} Ottele x-määrä kertoja tai enemmän (abc) {2,} abcabc, abcabcabc
{x, y} Ottelu x- ja y-aikojen välillä. a) {2,4} aa, aaa, aaaaa
* Ahne ottelu, joka sopii kaikkeen * sijasta ab * c abc, abbcc, abcdc
+ Vastaa merkkiä ennen + yhtä tai useampaa kertaa a + c ac, aac, aaac,
? Vastaa merkkiä ennen? nolla tai yksi kerta. Käytetään myös ahneina otteluina ab? c ac, abc
Pakene merkistä taaksepäin viivan jälkeen tai luo paeta jakso . a sc a c

Escape-merkit (pakosarja)

Merkintä

Escape-merkit erottavat kirjainkoon.



Merkki Mitä se tekee?
Kaikki merkit, joita ei ole mainittu alla ja joita edeltää , poistetaan. Esimerkiksi, . vastaa jaksoa eikä suorita yllä mainittua toimintoa. Merkit, jotka tulisi välttää, ovat () [] {} ^ $. | * +?
0 Tyhjä merkki.
kohteeseen Sisään Perl , a on kello tai hälytys, eikä sitä käytetä säännöllisissä lausekkeissa.
TO Yhdistä monirivisen merkkijonon alku.
b Sanaraja useimmissa tai taaksepäin.
B Ei sanaraja.
d Yhdistä mikä tahansa desimaalinumero (0-9).
D Yhdistä mikä tahansa ei-numeroinen.
On Yhdistä paeta.
f Yhdistä lomakesyöte.
n Ottelu a uusi rivi .
Q ... E Ohittaa mitään erityistä merkitystä sovitetulla.
r Yhdistä paluuvaunu.
s Ottelut a tilaa merkki (välilyönti, t, r, n).
S Vastaa mitä tahansa muuta välilyöntiä.
t Ottelu a välilehti.
v Yhdistä pystysuuntainen välilehti.
sisään Vastaa mitä tahansa sanamerkkiä ([a-zA-Z_0-9]).
SISÄÄN Vastaa mitä tahansa yhtä sanatonta merkkiä.

Säännöllisen lausekkeen liput

Säännöllisen lausekkeen ulkopuolella (lopussa) liput auttavat kuvion sovittamisessa.

Merkki Mitä se tekee?
i Ohita tapaus ( isot kirjaimet ja pieni kirjain sallittu).
m Monirivinen ottelu.
s Yhdistä uudet linjat.
x Salli välilyöntejä ja kommentteja.
J Ryhmänimien kopiot ovat sallittuja.
U Ungreedy-ottelu.

Perl-ohjelmointikielen säännöllisen lausekkeen esimerkit

Alla on muutama esimerkki säännöllisistä lausekkeista ja kuvion sovittamisesta Perlissä. Monet näistä esimerkeistä ovat samanlaisia ​​tai samoja kuin muut ohjelmointikielet ja ohjelmat, jotka tukevat säännöllisiä lausekkeita.

erityyppisiä USB-portteja
$data =~ s/bad data/good data/i;

Yllä oleva esimerkki korvaa kaikki 'huonot tiedot' hyvillä tiedoilla käyttämällä a kirjainkoosta riippumaton ottelu. Joten jos $ tiedot muuttuja oli 'Tässä on huonoja tietoja', siitä tulee 'Tässä on hyviä tietoja'.

$data =~ s/a/A/;

Tämä esimerkki korvaa kaikki pienet kirjaimet että isoilla kirjaimilla TO . Joten jos $ data olisi 'esimerkki', siitä tulisi 'exAmple'.

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

Yllä oleva esimerkki korvaa kaikki pienet kirjaimet a - z tähdellä. Joten jos $ data olisi 'Esimerkki', siitä tulisi 'E ******'.

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

Tässä esimerkissä käytetään merkkiä $, joka käskee säännöllisen lausekkeen vastaamaan merkkijonon lopussa olevaa tekstiä. Joten jos $ data olisi 'esimerkki', siitä tulisi 'esimerkkejä'.

$data =~ s/./!/;

Yllä olevassa esimerkissä korvataan a aikana kanssa huutomerkki . Koska piste on metamerkki, jos syötit piste vain ilman ( paeta ) sitä pidetään minkä tahansa merkkinä. Tässä esimerkissä, jos $ data olisi 'esimerkki'. siitä tulisi 'esimerkki!', mutta jos sinulla ei ole paeta, se korvaisi jokaisen merkin ja muuttuisi '!!!!!!!!'

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

Lopuksi tässä yllä olevassa esimerkissä ei (^) käskee säännöllisen lausekkeen vastaamaan mitä tahansa rivin alussa. Tässä esimerkissä kaikki pienet kirjaimet 'e' rivin alussa korvataan isolla 'E.' Siksi, jos $ data olisi 'esimerkki', siitä tulisi 'Esimerkki'.

Kärki

Jos haluat tutkia säännöllisiä lausekkeita vielä enemmän komennoissa, kuten pito , tai säännöllisiä lausekkeita ohjelmointikielessä, tutustu O'Reilly-kirjaan 'Säännöllisten lausekkeiden hallinta'.