Regex
Īsumā par regulāra izteiksme , uz regex ir teksta virkne, kas ļauj jums izveidot modeļus, kas palīdz saskaņot, atrast un pārvaldīt tekstu. Perl ir lielisks piemērs programmēšanas valoda kas izmanto regulāras izteiksmes. Tomēr tā ir vienīgā no daudzajām vietām, kur var atrast regulārus izteicienus. Regulāras izteiksmes var izmantot arī no komandrindas un teksta redaktoros, lai failā atrastu tekstu.
Mēģinot vispirms saprast regulāros izteicienus, šķiet, it kā tā būtu cita valoda. Tomēr regulāru izteiksmju apgūšana var ietaupīt tūkstošiem stundu, ja strādājat ar tekstu vai jums ir nepieciešams parsēt lielu datu apjomu. Zemāk ir regulāras izteiksmes piemērs ar katru tā sastāvdaļu. Šī regulārā izteiksme ir parādīta arī Perla programmēšanas piemēros, kas parādīti vēlāk šajā lapā.
Regulāro izteicienu pamati (apkrāptu lapa)
Aplūkojot iepriekš minēto piemēru, tas var būt milzīgs. Tomēr, kad esat sapratis regulārās izteiksmes komandu darbības galveno sintaksi, varat izlasīt iepriekš minēto piemēru tā, it kā jūs lasītu šo teikumu. Diemžēl ne visās programmās, komandās un programmēšanas valodās tiek izmantoti vieni un tie paši parastie izteicieni, taču tiem visiem ir līdzība.
Raksturs | Ko tas dara? | Piemērs | Sērkociņi |
---|---|---|---|
^ | Atbilst rindas sākumam | ^ abc | abc, abcdef .., abc123 |
$ | Sērkociņi rindas beigas | abc $ | mans: abc, 123abc, theabc |
. | Saskaņojiet jebkuru rakstzīmi | a.c | abc, asg, a2c |
| | VAI operators | abc | xyz | abc vai xyz |
(...) | Uzņemiet visu atbilstošo | a) b (c) | Uzņem “a” un “c” |
(?: ...) | Netverošā grupa | a) b (?: c) | Tver “a”, bet tikai “c” grupas |
[...] | Atbilst jebkuram saturam iekavās | [abc] | a, b vai c |
[^ ...] | Atbilst visam, kas nav iekavās | [^ abc] | xyz, 123, 1de |
[a-z] | Atbilst visām rakstzīmēm starp 'a' un 'z' | [b-z] | BC, prāts, xyz |
{x} | Precīzs “x” reižu daudzums, lai tas atbilstu | (abc) {2} | abcabc |
{x,} | Saskaņojiet “x” daudzumu reizes vai vairāk | (abc) {2,} | abcabc, abcabcabc |
{x, y} | Sakrīt starp 'x' un 'y' reizēm. | a) {2,4} | aa, aaa, aaaaa |
* | Mantkārīga spēle, kas atbilst visam * vietā | ab * c | abc, abbcc, abcdc |
+ | Atbilst rakstzīmei pirms + vienu vai vairākas reizes | a + c | ac, aac, aaac, |
? | Atbilst rakstzīmei pirms? nulle vai viena reize. Arī tiek izmantots kā negribīgs sērkociņš | ab? c | ac, abc |
Aizbēdziet no rakstzīmes pēc slīpsvītras vai izveidojiet bēgšanas secība . | a sc | a c |
Bēgšanas rakstzīmes (aizbēgšanas secība)
PiezīmeEscape rakstzīmes ir reģistrjutīgas.
Raksturs | Ko tas dara? |
---|---|
Jebkura rakstzīme, kas nav minēta zemāk, pirms ir , tiks izdzēsta. Piemēram, . atbilst periodam un neveic iepriekš minēto funkciju. Rakstzīmes, no kurām jāizvairās, ir () [] {} ^ $. | * +? | |
0 | Null raksturs. |
uz | In Perl , a ir zvans vai trauksmes signāls, un tas netiek izmantots parastajās izteiksmēs. |
TO | Sakrīt ar daudzrindu virknes sākumu. |
b | Vārda robeža lielākajā daļā vai atpakaļatkāpes. |
B | Bez vārda robežas. |
d | Saskaņojiet jebkuru ciparu aiz komata (0–9). |
D | Sakrīt ar jebkuru ciparu. |
ir | Saskaņot aizbēgšanu. |
f | Atbilst formas plūsmai. |
n | Spēle a jauna līnija . |
Q ... E | Ignorē jebkādu īpašu nozīmi tajā, kas tiek saskaņots. |
r | Saskaņojiet pārvadājuma atgriešanos. |
s | Spēles a telpa rakstzīme (atstarpe, t, r, n). |
S | Atbilst jebkuram ne-atstarpes rakstzīmei. |
t | Spēle a cilni. |
v | Saskaņojiet vertikālu cilni. |
iekšā | Sakrīt ar jebkuru vārda rakstzīmi ([a-zA-Z_0-9]). |
IN | Atbilst jebkuram vienam vārdam, kas nav vārds. |
Regulārās izteiksmes karodziņi
Ārpus regulārās izteiksmes (beigās) karodziņi palīdz saskaņot rakstu.
Raksturs | Ko tas dara? |
---|---|
i | Ignorēt lietu ( lielie burti un mazie burti atļauts). |
m | Daudzrindu spēle. |
s | Saskaņojiet jaunas līnijas. |
x | Atļaut atstarpes un komentārus. |
Dž | Atļauts kopēt grupu nosaukumus. |
U | Ungreedy mačs. |
Perla programmēšanas valodas regulāro izteiksmju piemēri
Tālāk ir sniegti daži regulāru izteicienu un rakstu atbilstības piemēri Perl. Daudzi no šiem piemēriem ir līdzīgi vai vienādi ar citām programmēšanas valodām un programmām, kas atbalsta regulāras izteiksmes.
$data =~ s/bad data/good data/i;
Iepriekš minētais piemērs aizstāj visus “sliktos datus” ar “labiem datiem”, izmantojot a reģistrjutīgs spēles. Tātad, ja $ dati mainīgais bija “Šeit ir slikti dati”, tas kļūs par “Šeit ir labi dati”.
$data =~ s/a/A/;
Šis piemērs aizstāj visus mazos burtus uz ar lielo burtu TO . Tātad, ja $ dati būtu “piemērs”, tas kļūtu par “exAmple”.
$data =~ s/[a-z]/*/;
Iepriekš minētais piemērs aizstāj visus mazos burtus no a līdz z ar zvaigznīti. Tātad, ja $ dati būtu “Piemērs”, tas kļūtu par “E ******”.
$data =~ s/e$/es/;
Šajā piemērā tiek izmantots rakstzīme $, kas regulārajai izteiksmei liek saskaņot tekstu pirms tā virknes beigās. Tātad, ja $ dati būtu “piemērs”, tas kļūtu par “piemēriem”.
$data =~ s/./!/;
Iepriekš minētajā piemērā mēs aizstājam a periodā ar izsaukuma zīme . Tā kā periods ir metaraksts, ja ievadījāt periodu tikai bez ( aizbēgt ) to uzskata par jebkuru rakstzīmi. Šajā piemērā, ja $ dati būtu “piemērs”. tas kļūtu par 'piemēru!', tomēr, ja jums nebūtu bēgšanas, tas aizstātu katru rakstzīmi un kļūtu par '!!!!!!!!'
$data =~ s/^e/E/;
Visbeidzot, šajā iepriekš minētajā piemērā Nē (^) liek regulārajai izteiksmei sakrist ar jebko rindas sākumā. Šajā piemērā jebkura mazā burta “e” rindas sākumā tiek aizstāta ar lielo burtu “E.” Tāpēc, ja $ dati būtu “piemērs”, tas kļūtu par “piemēru”.
PadomsJa vēlaties vēl vairāk izpētīt regulāros izteicienus tādās komandās kā saķere vai regulāras izteiksmes programmēšanas valodā skatiet O'Reilly grāmatu 'Regulāru izteiksmju apguve'.