For faster navigation, this Iframe is preloading the Wikiwand page for Regularni izraz.

Regularni izraz

Ujemanje vzorca
(?<=\.) {2,}(?=[A-Z])
Ujemata se vsaj dva zaporedna presledka, a le, če je pred njima pika (.), za njima pa velika začetnica.

Regularni izraz (angleško Regular expression, pogosto okrajšan v regex ali regexp),[1] včasih tudi racionalni izraz (rational expression)[2][3] je niz znakov, ki definira splošen iskalni vzorec v algoritmu za iskanje ali validiranje nizov. Skladnja regularnih izrazov je standardizirana in oblikovana za jedrnatost ter fleksibilnost, v obliki, ki jo je enostavno natipkati s tipkovnico s standardnim naborov znakov ASCII.

Vsak znak v regularnem izrazu je bodisi metaznak s posebnim pomenom, bodisi navaden znak z dobesednim pomenom. Za primer, v izrazu a. je »a« navaden znak, ».« pa metaznak, ki vrne ujemanje z vsakim znakom razen s prelomom vrstice. Izraz a. se bo torej ujemal z nizi »a «, »aX« ali »a0«, ne pa z »bX« ali »Xa«. S kombiniranjem navadnih in metaznakov lahko torej programer izdela regularen izraz, ki se bo ujemal s točno določenim nizom ali zelo splošnim vzorcem znakov v nizu, algoritem pa bo z njim procesiral posredovane nize in zaznal ujemanje ali ne. Po podobnem načelu delujejo nadomestni znaki (wildcard), ki pa so precej bolj omejeni z vzorci in imajo manjši nabor metaznakov (znan zgled je zvezdica *).

Regularni izrazi se uporabljajo za raznovrstne namene pri obdelavi besedil ali drugih nizov, denimo za iskanje in zamenjavo v oblikovalnikih in urejevalnikih besedil, splošnejših poizvedbah v iskalnikh ter za leksikalno analizo. Zmožnost ponujajo mnogi programski jeziki, bodisi že vgrajeno, bodisi s standardnimi knjižnicami.

Skladnja

[uredi | uredi kodo]

Vzorec (pattern), ki se ujema s tarčnim nizom (string), je sestavljen iz zaporedja atomov. Atom je točka v vzorcu, ki jo algoritem primerja s tarčnim nizom. Najpreprostejši atom je dobeseden, možno pa je tudi združevati dele vzorca za ujemanje z atomom, v tem primeru je nujna uporaba ( ) kot metaznakov. Metaznaki tvorijo atome, kvantifikatorje, ki določajo število atomov, logični znak OR za skupek alternativ, logični znak NOT, ki negira atom, in povratne sklice. Ujemanje se zgodi, ko se ujemajo vsi atomi regexovega vzorca.

Obstaja približno 14 metaznakov (odvisno od procesorja), ki imajo svoj dobesedni pomen ali ne v odvisnosti od konteksta ali prisotnosti ubežnega znaka, ki je v regularnih izrazih leva poševnica \. Običajno so metaznaki {}[]()^$.|*+? in \, dobesedni znaki, ki se spremenijo v metaznake ob ubežnem znaku, pa dswDSW in N.

Osnovni koncepti

[uredi | uredi kodo]

Vzorec definira množico nizov, ki zadostujejo podanim kriterijem. V najenostavnejši obliki lahko definira končno množico z naštevanjem njenih elementov, toda običajno obstaja bolj zgoščena oblika; za primer, množico treh nizov »Handel«, »Händel« in »Haendel« lahko definiramo bodisi z naštevanjem (Handel)|(Händel)|(Haendel), bodisi zgoščeno s H(ä|ae?)ndel. Pravimo, da se vzorec ujema s katerimkoli od teh treh nizov.

Večina izvedb vsebuje naslednje operacije za izdelavo regularnih izrazov:

Logični OR
Navpičnica ločuje alternative. Za primer, Matija|Mateja se ujema z »Matija« in »Mateja«
Združevanje
Oklepaji se med drugim uporabljajo za določanje obsega in vrstnega reda operatorjev. Ekvivalent zgornjemu zgledu je Mat(i|e)ja
Kvantifikacija
Kvantifikator na mestu za elementom (kot je znak) ali skupino določa, kolikokrat se lahko predhodni element pojavi.
? Vprašaj označuje nič ali eno ponovitev predhodnega elementa. Za primer, Hae?ndel se ujema s »Handel« in »Haendel«.
* Zvezdica označuje nič ali več ponovitev predhodnega elementa. Za primer, ab*c se ujema z »ac«, »abc«, »abbc«, »abbbc« itd.
+ Plus označuje eno ali več ponovitev predhodnega elementa. Za primer, ab+c se ujema z »abc«, »abbc«, »abbbc« itd., ne pa z »ac«.
{n} Predhodni element se ujema točno n-krat.
{min,} Predhodni element se ujema vsaj min-krat.
{min,max} Predhodni element se ujema vsaj min-krat, ne pa več kot max-krat.
Nadomestni znak
Nadomestni znak . se ujema s katerimkoli znakom. Za primer, a.b se ujema s katerimkoli nizom, ki se začne z »a«, nadaljuje z enim poljubnim znakom in konča z »b«. a.*b se ujema z nizom, ki se začne z »a« in vsebuje »b« na neki kasnejši lokaciji.

Ti konstrukti se lahko kombinirajo za izdelavo poljubno kompleksnih izrazov, podobno kot matematične operacije iz številk in operatorjev +, −, × ter ÷. Za primer, tako H(ae?|ä)ndel kot H(a|ae|ä)ndel sta veljavna vzorca, ki se ujemata z istimi nizi kot prejšnji zgled H(ä|ae?)ndel.

Sklici

[uredi | uredi kodo]
  1. Goyvaerts, Jan. »Regular Expression Tutorial - Learn How to Use Regular Expressions«. www.regular-expressions.info.
  2. Ruslan Mitkov (2003). The Oxford Handbook of Computational Linguistics. Oxford University Press. str. 754. ISBN 978-0-19-927634-9.
  3. Lawson, Mark V. (17. september 2003). Finite Automata. CRC Press. str. 98–100. ISBN 978-1-58488-255-8.
{{bottomLinkPreText}} {{bottomLinkText}}
Regularni izraz
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?