C# Regex ձեռնարկ. Ինչ է C# կանոնավոր արտահայտությունը

C# Regex-ի այս ձեռնարկը բացատրում է, թե ինչ է C#-ում կանոնավոր արտահայտությունը, դրա շարահյուսությունը, Regex դասի մեթոդները և ինչպես օգտագործել այս մեթոդները օրինակների օգնությամբ.

Կանոնավոր արտահայտությունը C#-ում օգտագործվում է որոշակի նիշերի օրինակին համապատասխանեցնելու համար: Կանոնավոր արտահայտությունները օգտագործվում են ամեն անգամ, երբ օգտատերը պետք է գտնի կրկնվող օրինաչափություն կամ կատարի տվյալների վավերացում կամ նույնիսկ տվյալների ձևաչափումը ստուգելու համար:

RegEx-ն օգտագործվում է պարզելու համար, թե արդյոք տողը պարունակում է կամ համընկնում է տրված նիշերի օրինակին: Regex-ը հիմնականում նիշերի հաջորդականություն է, որը ցույց է տալիս օրինաչափություն:

Նախշը կարող է լինել ցանկացած բան՝ սկսած թվերից, նիշերից կամ բոլորի համակցությունից: Regex-ը լայնորեն օգտագործվում է վավերացման համար: Վերլուծելով կամ համապատասխանող տողերը, օրինակ, պարզելով, արդյոք տողը համապատասխանում է արժույթի ձևաչափին, հեռախոսահամարին կամ ամսաթվի ձևաչափին:

Regex դասը C#-ում

Regex դասը օգտագործվում է C#-ում՝ ռեգեքս գործողություններ կատարելու համար: Այն պարունակում է մի քանի տարբեր մեթոդներ, որոնք կարող են օգտագործվել ռեգեքսի հետ կապված տարբեր գործողություններ կատարելու համար:

Այն կարող է օգտագործվել մեծ տեքստը վերլուծելու համար որոշակի նիշերի հաջորդականություն գտնելու համար՝ օգտագործելով մեթոդներ, որոնք կարող են օգտագործվել համընկնում կատարելու համար, փոխարինել կամ կարող է օգտագործվել նիշերի հաջորդականությունը բաժանելու համար:

Regex դասը առկա է անվանատարածքի ներսում; System.Text.RegularExpression. Դասարանը որպես պարամետր ընդունում է տողը նիշերի հաջորդականության տեսքով:

C# Regex Methods

որ մենք ստեղծել ենք «^Super»-ը կարող է համընկնել սուպերի բոլոր արժեքների հետ, նույնիսկ գերմարդ կամ գերբնական, բայց մենք պարզապես չենք ուզում «Super» բառը:

Սա նշանակում է, որ բառից հետո պետք է լինի սպիտակ բացատ: նշեք բառի վերջը և մեկ այլ բառի սկիզբը: Դա անելու համար մենք նախշին կավելացնենք «\s» նշանը և դրանով իսկ մեր վերջնական օրինակը կդարձնենք որպես

^Super\s

Սցենար 3. Օգտագործեք կանոնավոր արտահայտություն՝ վավեր ֆայլ գտնելու համար: անուններ պատկերի ֆայլի տեսակի ընդլայնմամբ:

Իրական ժամանակի մեկ այլ կարևոր սցենար, որին հաճախ հանդիպում են մշակողները, ֆայլերի տեսակների վավերացումն է: Ենթադրենք, որ մենք ունենք վերբեռնման կոճակ UI-ում, որը կարող է ընդունել միայն պատկերային ֆայլի տեսակի ընդարձակումներ:

Մենք պետք է վավերացնենք օգտվողի վերբեռնման ֆայլը և տեղեկացնենք նրան, եթե նա վերբեռնել է սխալ ֆայլի ձևաչափ: Դրան կարելի է հեշտությամբ հասնել՝ օգտագործելով կանոնավոր արտահայտությունը:

Ստորև տրված է սա ստուգելու պարզ ծրագիր:

public static void Main(string[] args) gif)$"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("abc.jpg")); Console.WriteLine(reg.IsMatch("ab_c.gif")); Console.WriteLine(reg.IsMatch("abc123.png")); //When pattern doesnt match Console.WriteLine(reg.IsMatch(".jpg")); Console.WriteLine(reg.IsMatch("ask.jpegj")); 

Ելք

Ճիշտ

Ճիշտ է

Ճիշտ

Սխալ

Սխալ է

Բացատրություն

Այստեղ մենք պետք է համապատասխանենք ֆայլի անունը. Վավեր ֆայլի անունը կազմված է երեք մասից ( ֆայլի անվանում + . + ֆայլի ընդլայնում ): Մենք պետք է ստեղծենք կանոնավոր արտահայտություն, որը կհամապատասխանի բոլոր երեք մասերին: Եկեք սկսենք համապատասխանեցնելով առաջին մասը, այսինքն՝ ֆայլի անվանումը: Ֆայլի անունը կարող է պարունակել այբբենական և հատուկ նիշեր:

Ինչպես նշվեց ավելի վաղ, նշանը նշանակում է «\w»: Բացի այդ, ֆայլի անունը կարող է լինել մեկ կամ ավելիորին հաջորդում է կետը (.), որից հետո կայքի անունը՝ կետ (.) և վերջում՝ տիրույթի ընդլայնում։

Այսպիսով, նախորդ սցենարի նման մենք կփորձենք մաս առ մաս համապատասխանեցնել այն։ . Եկեք նախ սկսենք «www» համընկնելով: մաս. Այսպիսով, մենք սկսում ենք մեկնարկային նշանով, այնուհետև որպես «www»: Դա մի բան է, որը ֆիքսված է, ուստի մենք օգտագործում ենք մեկնարկային նշանը, որին հաջորդում են ճշգրիտ բառերը համապատասխանելու համար:

“^www.”

Այնուհետև կսկսենք աշխատել երկրորդ մասի վրա: Վեբ հասցեի երկրորդ մասը կարող է լինել ցանկացած այբբենական անուն: Այսպիսով, այստեղ մենք կօգտագործենք նիշերի դասում առկա քառակուսի փակագծերը՝ սահմանելու այն միջակայքը, որը պետք է համապատասխանի: Երկրորդ մասը երկրորդ մասի հետ ավելացնելուց հետո մեզ կտրվի:

“^www.[a-zA-Z0-9]{3,20}”

Այստեղ մենք նաև գանգուր փակագծեր ենք ավելացրել՝ կայքի անվան համար նվազագույն և առավելագույն նիշերի երկարությունը սահմանելու համար: Մենք տվել ենք նվազագույնը 3 և առավելագույնը 20: Դուք կարող եք տալ ցանկացած նվազագույն կամ առավելագույն երկարություն:

Այժմ, լուսաբանելով վեբ հասցեի առաջին և երկրորդ մասերը, մեզ մնում է միայն վերջինը: մաս, այսինքն՝ տիրույթի ընդլայնում։ Դա միանգամայն նման է նրան, ինչ մենք արեցինք վերջին սցենարում, մենք ուղղակիորեն կհամապատասխանենք տիրույթի ընդլայնումների հետ՝ օգտագործելով OR և փակելով բոլոր վավեր տիրույթի ընդլայնումները շրջանաձև փակագծում:

Այսպիսով, եթե այս ամենը գումարենք, մենք կունենանք: ամբողջական կանոնավոր արտահայտություն՝ ցանկացած վավեր վեբ հասցեին համապատասխանելու համար:

www.[a-zA-Z0-9]{3,20}.(com|in|org|co\.in|net|dev)$

Սցենար 5. Օգտագործեք կանոնավոր արտահայտություն՝ վավերացնելու համարէլփոստի id ձևաչափը

Ենթադրենք, որ մենք ունենք մուտքի ձև մեր վեբ էջում, որը խնդրում է օգտվողներին մուտքագրել իրենց էլ. հասցեն: Հասկանալի պատճառներով մենք չենք ցանկանա, որ մեր ձևը շարունակվի անվավեր էլ. հասցեներով: Օգտագործողի կողմից մուտքագրված էլ.փոստի հասցեն ճիշտ է, թե ոչ, հաստատելու համար մենք կարող ենք օգտագործել կանոնավոր արտահայտություն:

Ստորև տրված է էլփոստի հասցեն վավերացնելու պարզ ծրագիր:

public static void Main(string[] args) { string patternText = @"^[a-zA-Z0-9\._-]{5,25}.@.[a-z]{2,12}.(com|org|co\.in|net)"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("[email protected]")); Console.WriteLine(reg.IsMatch("[email protected]")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("[email protected]")); }

Ելք

Ճիշտ

Ճիշտ

Սխալ

Բացատրություն

A վավեր էլփոստի հասցեն պարունակում է այբուբեններ, թվեր և որոշ հատուկ նիշեր, ինչպիսիք են կետը (.), գծիկ (-) և ընդգծումները (_), որին հաջորդում է «@» նշանը, որին հաջորդում է տիրույթի անունը և տիրույթի ընդլայնումը:

Այսպիսով, մենք կարող ենք էլփոստի հասցեն բաժանել չորս մասի, այսինքն՝ էլփոստի նույնացուցիչ, «@» նշան, տիրույթի անունը, և վերջինը՝ դոմենի ընդլայնումը:

Սկսենք գրելով կանոնավոր արտահայտությունը առաջին մաս. Այն կարող է լինել ալֆա-թվային որոշ հատուկ նիշերով: Ենթադրենք, որ մենք ունենք արտահայտության չափը, որը տատանվում է 5-ից 25 նիշ: Ինչպես մենք գրել էինք այն ավելի վաղ (էլփոստի սցենարում), մենք կարող ենք գալ հետևյալ արտահայտությունը:

^[a-zA-Z0-9\._-]{5,25}

Այժմ, անցնելով երկրորդ մասին: Դա համեմատաբար հեշտ է, քանի որ մենք պետք է համապատասխանենք միայն մեկ խորհրդանիշի, այսինքն՝ «@»: Եթե ​​այն ավելացնենք վերը նշված արտահայտությանը, դա մեզ տալիս է:

^[a-zA-Z0-9\._-]{5,25}.@

Տեղափոխվելով երրորդ մաս, այսինքն՝ դոմենի անունը միշտ կլինի մի շարք ավելի ցածրհամընկնող բառեր, այբուբեններ, կայքերի հասցեներ, էլփոստի ID-ներ և նույնիսկ ֆայլերի տեսակներն ու ընդլայնումները:

Այս սցենարները բավականին օգտակար են օգտատերերի մուտքերի իրական ժամանակում վավերացման համար՝ առանց բազմաթիվ տողերի կոդ գրելու և դրանով իսկ օգնում են խնայել ժամանակն ու նվազեցնել բարդությունը. Այս օրինակներն օգտագործվել են օգտվողին ուղղորդելու՝ ստեղծելու կանոնավոր արտահայտությունների իրենց հավաքածուն և այդպիսով օգնելու նրան կարգավորել մի քանի այլ տարբեր սցենարներ:

Regex-ը կարող է պարզ լինել, ինչպես այբուբենի կամ թվերի օգտագործումը տվյալ շարքի հետ համապատասխանելու համար: նիշեր կամ կոմպլեքսներ՝ օգտագործելով հատուկ նիշերի, քանակականների, նիշերի դասերի համակցություն և այլն՝ բարդ ձևաչափերը հաստատելու կամ նիշերի շարքում որոշակի օրինաչափություն որոնելու համար:

Մի խոսքով, կանոնավոր արտահայտությունը բավականին պարզ է: հզոր գործիք ծրագրավորողի համար և օգնում է նվազեցնել կոդերի քանակը, որոնք անհրաժեշտ են տվյալների համընկնման կամ վավերացման առաջադրանքում կատարելու համար:

IsMatch

Regex դասի ամենապարզ և օգտակար մեթոդը IsMatch մեթոդն է: Այս մեթոդը տարբեր պարամետրերի վրա հիմնված նիշերի համապատասխանեցման համար ունի տարբեր ծանրաբեռնվածություններ:

Ամենապարզը

Փոխարինելն է (Տողի տեքստ, տողի փոխարինման տեքստ)

Փոխարինման մեթոդը ընդունում է երկու պարամետրերը և վերադարձնում է լարային արժեք: Առաջին պարամետրը նիշերի հաջորդականությունն է կամ ռեգեքսը, որը ցանկանում եք օգտագործել համընկնման համար, իսկ երկրորդը ռեգեքսի փոխարինումն է:

Մեթոդն աշխատում է տվյալ տեքստի համապատասխանությունը գտնելով և այն փոխարինելով այն օգտագործողի կողմից տրամադրված փոխարինող տեքստ: Մեթոդի ստորագրությունն է public string Replace(string text, string replacementText)

Public string[] Split(string text)

The split մեթոդը regex դասից ընդունում է տողերի մուտքագրումը որպես պարամետր և վերադարձնում է ենթատողեր պարունակող զանգված: Մեթոդի մեջ փոխանցված պարամետրը այն տողն է, որը պետք է բաժանվի:

Մեթոդը գտնում է համապատասխան մուտքային օրինաչափությունը տողի մեջ և երբ այն նույնացնում է որևէ համապատասխան օրինաչափություն, այն այդ վայրում գտնվող տողը բաժանում է ավելի փոքր ենթատողի: յուրաքանչյուր համընկնող օրինաչափություն հանդիսանում է բեկման կետ: Այնուհետև մեթոդը վերադարձնում է զանգված, որը պարունակում է բոլոր ենթատողերը:

Regex C# մեթոդների օգտագործումը

Եկեք նայենք այս մեթոդների օգտագործմանը` գրելով պարզ ծրագիր:

public static void Main(string[] args) { string patternText = "Hello"; Regex reg = new Regex(patternText); //IsMatch(string input) Console.WriteLine(reg.IsMatch("Hello World")); //IsMatch(string input, int index) Console.WriteLine(reg.IsMatch("Hello", 0)); //IsMatch(string input, string pattern) Console.WriteLine(Regex.IsMatch("Hello World", patternText)); //Replace(string input, string replacement) Console.WriteLine(reg.Replace("Hello World", "Replace")); //Split(string input, string pattern) string[] arr = Regex.Split("Hello_World_Today", "_"); foreach(string subStr in arr) { Console.WriteLine("{0}", subStr); } }

Վերոնշյալի արդյունքըծրագիր

Ճիշտ

Ճիշտ

Ճիշտ

Փոխարի աշխարհը

Բարեւ

Աշխարհ

Այսօր

Վերոնշյալ կոդի բացատրությունը.

Ծրագրի սկզբում մենք ստեղծել ենք օբյեկտ և օրինաչափություն, որը մենք կօգտագործենք հաջորդ տողերի մուտքագրման մեջ կոդի համապատասխանության համար մենք օգտագործել ենք տեքստի ձևաչափում, որպեսզի սկզբում ամեն ինչ պարզ լինի, բայց եթե ձեզ հարմար է, կարող եք սկսել օգտագործել սովորական արտահայտությունների օրինաչափություններ: (Այս ձեռնարկում մենք մանրամասնորեն կքննարկենք սովորական արտահայտությունների օրինակը)

Այնուհետև մենք կօգտագործենք համընկնող տողը մուտքագրելու այն գործակիցը, որը մենք հայտարարագրել ենք որպես նշված օբյեկտ մուտքային տողի հետ, և եթե այն համընկնում է: այնուհետև այն կվերադառնա false-ի:

Հաջորդ մեթոդը, որը մենք օգտագործել ենք, IsMethod-ն է (string input, int index): Այս մեթոդը ընդունում է երկու պարամետր, և այստեղ մենք տրամադրում ենք մուտքագրման տող և ինդեքս, որտեղից պետք է սկսվի համընկնումը: Օրինակ, այստեղ մենք ցանկանում էինք սկսել համընկնումը մուտքագրման տողի սկզբից:

Այնուհետև մենք ցուցադրեցինք IsMatch-ի օգտագործումը (լարային մուտքագրում, տողերի օրինակ): Այստեղ մենք տրամադրեցինք մուտքագրման տողը, այնուհետև մենք ուզում էինք պարզել, որ եթե օրինակի տեքստը առկա է մուտքագրման մեջ, թե ոչ: Եթե ​​այն ներկա է, ապա այն կվերադարձնի true (ինչպես մեր դեպքում), այլապես այն կվերադարձնի false:

Մեկ այլ մեթոդ, որը մենք քննարկել ենք, փոխարինվել է: Այս մեթոդը բավականին օգտակար է այն ծրագրերում, որտեղ ցանկանում եք փոփոխություններ կատարել մուտքային տվյալների մեջկամ փոխեք առկա տվյալների ձևաչափը:

Այստեղ մենք տրամադրում ենք երկու պարամետր, առաջինը մուտքային տողն է, իսկ երկրորդը` տողը, որը կարող է օգտագործվել նախորդ տողը փոխարինելու համար: Այս մեթոդը օգտագործում է նաև regex օբյեկտում սահմանված օրինաչափությունը, որը մենք սահմանել ենք ավելի վաղ:

Մյուս կարևոր մեթոդը, որը մենք օգտագործել ենք, բաժանումն է: Այս մեթոդը օգտագործվում է տրված տողը բաժանելու համար՝ հիմնվելով որոշ կրկնվող օրինաչափությունների վրա։ Այստեղ մենք տրամադրել ենք «Hello_World_Today» տողը:

Ենթադրենք, ուզում ենք հեռացնել ընդգծված գծերը տվյալ տողից և ստանալ ենթատողերը: Դրա համար մենք նշում ենք մուտքագրման պարամետրը, այնուհետև տալիս ենք այն օրինաչափությունը, որը մենք պետք է օգտագործենք որպես բաժանման կետ: Մեթոդը վերադարձնում է զանգված, և մենք կարող ենք օգտագործել մի պարզ օղակ, ինչպիսին է foreach-ը, բոլոր տողերը առբերելու համար:

Կանոնավոր արտահայտման շարահյուսություն

Կան մի քանի տարբեր շարահյուսություններ, ինչպիսիք են հատուկ նիշերը, քանակականները, նիշերի դասերը, և այլն, որոնք կարող են օգտագործվել տվյալ մուտքից որոշակի օրինաչափություն համապատասխանեցնելու համար:

Ուսուցման այս մասում մենք կխորացնենք regex-ի առաջարկած շարահյուսությունը և կփորձենք լուծել իրական կյանքի որոշ սցենարներ: օգտագործելով դրանք: Նախքան շարունակելը, համոզվեք, որ դուք ստացել եք regex-ի և regex դասի տարբեր մեթոդների հիմնական գաղափարը:

Հատուկ նիշերը

Regex-ի հատուկ նիշերը օգտագործվում են մի քանի տարբեր իմաստներ վերագրելու համար: մի օրինակին. Այժմ մենք կանդրադառնանքորոշ լայնորեն օգտագործվող հատուկ նիշեր և դրանց նշանակությունը Regex-ում: ^ Սա ամենալայն կիրառվող շարահյուսություններից մեկն է։ Այն նշանակում է սկիզբը, բառը կամ օրինաչափությունը, որից հետո սկսում է համապատասխանել մուտքագրված տեքստի սկզբից: $ Այս նշանն օգտագործվում է վերջից բառերը համապատասխանեցնելու համար: լարից։ Այս նշանից առաջ նշված բառերը/նախշերը կհամընկնեն տողի վերջում առկա բառերի հետ: : (կետ) Կետն օգտագործվում է տվյալ տողի մեկ նիշը համապատասխանեցնելու համար, որը տեղի է ունենում մեկ անգամ: \n Սա օգտագործվում է նոր տող: \d և \D Փոքրատառ «d»-ն օգտագործվում է թվանշանը համապատասխանեցնելու համար, իսկ մեծատառ «D»-ը՝ ոչ թվանշանը համապատասխանելու համար: նիշերը: \s և \S Փոքրատառ «s»-ն օգտագործվում է սպիտակ բացատներին համապատասխանեցնելու համար, իսկ մեծատառ «S»-ը՝ ոչ սպիտակ տարածությանը համապատասխանելու համար: . \w և \W Փոքրատառ «w»-ն օգտագործվում է այբբենական/ընդգծված նիշերին համապատասխանեցնելու համար, իսկ մեծատառ «W»-ը՝ ոչ բառերին համապատասխանելու համար: նիշեր:

Քանակականացման շարահյուսություն

Քանակականացուցիչի շարահյուսությունը օգտագործվում է համապատասխանող չափանիշները հաշվելու կամ քանակականացնելու համար: Օրինակ, եթե ցանկանում եք ստուգել, ​​թե կոնկրետ տողը մեկ կամ մի քանի անգամ պարունակում է այբուբեն: Եկեք նայենք կանոնավոր արտահայտության մեջ սովորաբար օգտագործվող որոշ չափորոշիչներին:

ՔանակիչՇարահյուսություն Իմաստը
* Այս նշանն օգտագործվում է նախորդ նիշին համապատասխանելու համար:
+ Այս նշանն օգտագործվում է մեկ կամ մի քանի նիշ անընդմեջ համապատասխանելու համար:
{n} Գանգուրի ներսում գտնվող թվանշանը փակագծերը օգտագործվում են գանգուր փակագծերի ներսում թվային թվերով սահմանված նախորդ նիշերի թվին համապատասխանելու համար:
{n,} Գանգուր փակագծերի ներսում գտնվող թիվը և այս նշանն օգտագործվում է համոզվելու համար, որ այն համապատասխանում է առնվազն n-ին (այսինքն՝ փակագծերի ներսում թվային արժեքին):
{n, m} Այս նշանն օգտագործվում է նախորդ նիշից համապատասխանեցնելու համար n անգամների քանակը m-ի թվով անգամների:
? Այս խորհրդանիշը ստիպում է նախորդ նիշերի համընկնումը որպես ընտրովի:

Նիշերի դասը

Նիշերի դասը հայտնի է նաև որպես նիշերի հավաքածուներ, և այն օգտագործվում է ռեգեքս շարժիչին ասելու, որ մի քանի նիշերից մեկ համընկնում փնտրի: Նիշերի դասը կհամապատասխանի միայն մեկ նիշի, և նիշերի շարքը, որը կցված է նիշերի հավաքածուի ներսում, նշանակություն չունի:

Նիշերի դասը Իմաստը
[ միջակայք ] Քառակուսի փակագծերի նշանն օգտագործվում է մի շարք նիշերի համընկնման համար: Օրինակ՝ մենք կարող ենք օգտագործել այն՝ «a» այբուբենից «z» այբուբենից ցանկացած նիշ սահմանելու համար՝ փակագծով միջակայքը փակելով [a-z]-ի պես

Կամ կարող ենք նաև համընկնել «1» թվի հետ « 9»՝ նշելովարտահայտություններ՝ օգտագործելով իրական ժամանակի որոշ օրինակներ:

Սցենար 1. Վավերացրեք, եթե մուտքագրման տողը կազմված է 6 նիշ տառատեսակով այբուբենի նիշերից:

Կանոնավոր արտահայտման ամենատարածված սցենարը տվյալ բառը գտնելն ու համապատասխանեցնելն է: Օրինակ, ասենք, որ ես օգտվողից ուզում եմ պատահական այբբենական տող, և այդ մուտքագրումը պետք է լինի ուղիղ 6 նիշ:

Վավերացնելու համար, որ մենք կարող ենք օգտագործել պարզ կանոնավոր արտահայտություն: Եկեք ծրագիր գրենք՝ կանոնավոր արտահայտությունների գրությունն ու օգտագործումը ավելի լավ հասկանալու համար:

public static void Main(string[] args) { string patternText = @"^[a-zA-Z]{6}$"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("Helios")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("Helo")); }

Ելք

Ճիշտ

Սխալ

Բացատրություն

Այս օրինակում մենք փորձում ենք հաստատել մուտքագրման տողը, ստուգելու, թե արդյոք այն պարունակում է վեցանիշ այբբենական նիշեր: Նիշերը կարող են լինել և՛ մեծատառերով, և՛ մեծատառերով, այնպես որ մենք պետք է հաշվի առնենք նաև դա:

Այսպիսով, այստեղ մենք սահմանեցինք կանոնավոր արտահայտությունների օրինակ «patternText» փոփոխականում և այն փոխանցեցինք ռեգեքս օբյեկտին: . Այժմ կոդի հաջորդ տողերը բավականին պարզ են, մենք օգտագործեցինք IsMatch մեթոդը՝ կանոնավոր արտահայտությունը և մուտքագրման տողը համեմատելու համար:

Եկեք հիմա նայենք մեր մշակած կանոնավոր արտահայտությունին: (^[a-zA-Z]{6}$) արտահայտությունը կազմված է 4 տարբեր մասերից։ «^», «[a-zA-Z]», «{6}» և «$»: Երկրորդ մասը նշանակում է համապատասխանող նիշերը, որոնք օգտագործվում են արտահայտությունների համընկնումը կատարելու համար, «a-z» փոքրատառերի և «A-Z» մեծատառերի համար:

Առաջինըմասի նիշը «^» ապահովում է, որ տողը սկսվում է երկրորդ մասում սահմանված օրինաչափությամբ, այսինքն՝ ստորին և մեծատառ այբուբեններով:

Երրորդ մասի գանգուր փակագծերը որոշում են տողի այն նիշերի քանակը, որոնք կարելի է նույնացնել: սահմանված օրինակով, այսինքն՝ 6 այս դեպքում և «$» խորհրդանիշով համոզվեք, որ այն ավարտվում է երկրորդ մասում սահմանված օրինակով։

^[a-zA-Z]{6}$

Սցենար 2. Օգտագործեք կանոնավոր արտահայտություն՝ հաստատելու, որ բառը, որը սկսվում է «Super»-ով և դրանից հետո ունի սպիտակ բացատ, այսինքն՝ ստուգելու համար, թե արդյոք «Super»-ը առկա է նախադասության սկզբում:

Ենթադրենք, որ մենք կարդում ենք օգտվողի որոշ մուտքեր և պետք է համոզվենք, որ օգտվողը միշտ սկսում է իր նախադասությունը որոշակի բառով, թվով կամ այբուբենով: Դրան կարելի է հասնել բավականին հեշտությամբ՝ օգտագործելով պարզ կանոնավոր արտահայտություն:

Եկեք նայենք ծրագրի օրինակին և հետո մանրամասն քննարկենք, թե ինչպես գրել այս արտահայտությունը:

 public static void Main(string[] args) { string patternText = @"^Super\s"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("Super man")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("Superhero")); }

Ելք

Ճիշտ է

Սխալ

Բացատրություն

Այս օրինակում նույնպես մենք օգտագործեցինք նույն կոդի կարգավորումը, ինչպես արեցինք առաջինը։ Այս սցենարի կանոնավոր արտահայտությունների օրինակը պահանջում է համընկնում բառերի կամ նախադասությունների հետ, որոնք սկսվում են «Super»-ով:

^Super

Այսպիսով, ինչպես մենք ուզում ենք համապատասխանել բառի սկզբից: շարքը, մենք կսկսենք դնելով «^» նշանը, այնուհետև կտանք այն օրինաչափությունը, որը ցանկանում ենք համապատասխանեցնել, այս դեպքում՝ «Super»: Այժմ օրինակը[1-9]

[^ միջակայք] Սա նշանակում է ժխտական ​​նիշերի դաս: Այն օգտագործվում է որևէ բանի համապատասխանեցնելու համար, այլ ոչ թե փակագծում նշված տիրույթում:
\ Սա օգտագործվում է հատուկ նիշերին համապատասխանեցնելու համար, որոնք կարող են ունենալ իրենց ռեգեքսի նշանները: Շեղը օգտագործվում է հատուկ նիշերը իրենց բառացի ձևով համապատասխանեցնելու համար:

Խմբավորում

Կլոր փակագծերը կամ փակագծերը կարող են օգտագործվել կանոնավորի մի մասը խմբավորելու համար: արտահայտություն միասին. Սա թույլ է տալիս օգտագործողին ավելացնել քանակական արտահայտությամբ:

Խմբավորում Իմաստը
( խումբ արտահայտություն ) Կլոր փակագծերը օգտագործվում են արտահայտությունը խմբավորելու համար:
նիշերը, ուստի կօգտագործեն «+» նշանը: Միավորեք դրանք և մենք ստանում ենք առաջին մասի խորհրդանիշը:
(\w+)

Բրակետը բաժանեց սա մասերի: Հաջորդ մասը կետի խորհրդանիշն է: Քանի որ կետի խորհրդանիշն ունի իր նշանակությունը ռեգեքսի մեջ, մենք դրա առաջ կօգտագործենք հակադարձ կտրվածք՝ դրան բառացի իմաստ տալու համար: Միավորեք երկուսն էլ, և մենք կունենանք ծածկված ռեգեքսի առաջին երկու մասերը:

(\w+)\.

Այժմ, երրորդ և վերջին մասի համար մենք կարող ենք ուղղակիորեն սահմանել ֆայլի պահանջվող ընդլայնումները, որոնք առանձնացված են «-ով:գործի այբբենական նիշեր. Եթե ​​ցանկանում եք, կարող եք նաև ներառել թվային կամ մեծատառ այբբենական նիշեր, սակայն այս սցենարի համար մենք կօգտագործենք փոքրատառ այբուբենները:

Եթե մենք ավելացնենք արտահայտությունը փոքրատառ այբուբենների համար, որոնց երկարությունը տատանվում է 2-ից 12 նիշ, այնուհետև կունենանք հետևյալ արտահայտությունը:

^[a-zA-Z0-9\._-]{5,25}.@.[a-z]{2,12}

Այժմ մեզ մնում է տիրույթի ընդլայնման արտահայտությունը, որը նման է չորրորդ սցենարին, մենք կկարգավորենք որոշակի տիրույթի ընդլայնումներ: Եթե ​​ցանկանում եք, կարող եք դրանցից ավելին ավելացնել՝ փակելով դրանք շրջանաձև փակագծով և դրանք առանձնացնելով «

Գնալ վեր