Регуларни изрази¶
Замисли да радиш као програмер у банци и да треба да провериш да ли је корисник унео исправан број рачуна, или да радиш на веб-сајту и да мораш да провериш да ли је адреса електронске поште коју је корисник унео заиста валидна. Можда развијаш апликацију која треба да пронађе све датуме у тексту, или све бројеве телефона који почињу са +381.
Овакве типове задатака можеш решити помоћу регуларних израза (енгл. Regular Expressions - Regex) – моћног алата који ти омогућује да дефинишеш сложене обрасце за претрагу, валидацију и манипулацију стрингова на веома ефикасан начин.
Регуларни израз је низ карактера којим дефинишеш образац за претрагу у тексту, а образац је низ карактера који описује какав текст тражиш. На пример:
ако тражиш реч „programiranje”, образац је једноставно
programiranjeако тражиш било коју цифру, образац је
\dако тражиш три цифре заредом, образац је
\d\d\dили краће\d{3}.
Рад са регуларним изразима у језику C# дефинисан је у именском простору
System.Text.RegularExpressions,
односно главној класи која се зове
Regex.
Ако је задатак да пронађеш тачно одређени број телефона…
string tekst = "Moj broj telefona je 063/123-4567";
string sablon = "063/123-4567";
bool nadjeno = Regex.IsMatch(tekst, sablon);
Console.WriteLine($"Pronadjeno: {nadjeno}"); // Pronadjeno: True
…решење је прилично једноставно. Међутим, шта ако је задатак да пронађеш било који број телефона написан у том формату? Решење подразумева коришћење метакарактера. То су специјални карактери који имају посебно значење.
цифра (0-9)
\dслово, цифра или _
\wбели простор (space, tab, newline)
\sсве што није цифра
\Dсве што није слово/цифра/_
\Wсве што није бели простор
\Sбило који карактер
.почетак стринга
^крај стринга
$
Карактерски скупови се стављају у угласте заграде [] и дефинишу скуп
карактера од којих се било који може појавити.
било које од слова a, b или c
[abc]било које мало слово
[a-z]било које велико слово
[A-Z]било која цифра
[0-9]или\dсве осим a, b или c
[^abc]
Квантификатори говоре колико пута се претходни карактер или група понављају.
нула или више понављања
*једно или више понављања
+нула или једно понављање
?тачно \(n\) понављања
{n}\(n\) или више понављања
{n,}од \(n\) до \(m\) понављања
{n,m}
Сада, када си се упознао са метакарактерима, можеш да користиш основне операције у којима можеш да их примениш.