Գրառումներ Կանոնաւոր արտայայտութիւն (RegExp)
Կանոնաւոր արտայայտութիւն (RegExp)
Cancel

Կանոնաւոր արտայայտութիւն (RegExp)

Կանոնաւոր արտայայտութիւնը (անգլ.՝ regular expression) որոնման ֆորմալ լեզու է, որի օգնութեամբ կարող ենք ստեղծել կաղապար (անգլ.՝ pattern) եւ տրուած տեքստում փնտրել այդ կաղապարին համապատասխան բառեր եւ արտայայտութիւններ։

Ցանկացած սիմուոլ

Կանոնաւոր արտայայտութիւններում կէտը նշանակում է ցանկացած սիմուոլ։ Օրինակ եթե գրենք՝ կարա. կը գտնենք տեքստում եղած ինչպէս՝ կարապ այնպէս էլ կարաս եւ կարագ բառերը։

Հաւաքածու

Հաւաքածուները քառակուսի փակագծերում գրուող սիմուոլներն են։ Եթե նախորդ օրինակից ուզենանք գտնել միայն «կարապ» եւ «կարագ» բառերը, ապա կը գրենք՝ կարա[պգ]:

Սիմուոլներից բացի հաւաքածուն կարող է պարունակել նաեւ միջակայք։ Օրինակ՝ [a-d] կամ [0-5] կամ [ա-ֆԱ-Ֆ]։ Միջակայքի հերթական անդամը կը որոշուի Unicode-ի աղիւսակով։

Հաւաքածու կազմելիս կարող ենք շարժուել նաեւ բացառման սկզբունքով՝ [^աբ]: Վերջինս նշանակում է ամէն ինչ բացի «ա» եւ «բ» տառերից։

Կրկնութիւն

Կրկնութիւնները ձեւաւոր փակագծերում գրող թուերն են, որոնք ցոյց են տալիս իրենցից առաջ գրուած սիմուոլի կամ խմբի քանակը։

{n, m} - մաթեմատիկօրէն նշանակում է՝ [n, m] հատ
{, m} - մաթեմատիկօրէն նշանակում է՝ [0, m] հատ
{n,} - մաթեմատիկօրէն նշանակում է՝ [n, ∞] հատ
{n} - մաթեմատիկօրէն նշանակում է՝ [n] հատ

Օրինակ՝ ա{2, 3} որոնելիս կը գտնենք «աա» եւ «աաա» յաջորդականութիւնները։

Խումբ

Կլոր փակագծերը օգտագործում ենք սիմուոլները խմբաւորելու համար։ Ենթադրենք անհրաժեշտ է գտնել «անան»-ով սկսուող բառեր, ապա կը գրենք՝ (ան){2}.{1,}, արդիւնքում կը ստանանք անանաս, անանուխ եւ նման այլ բառերը։

Տարբերակներ

Եթե ցանկանում ենք նշել մի քանի տարբերակ, ապա դրանք իրարից անջատում ենք ուղղահայեաց գծով։ Օրինակ կարող ենք գրել՝ կարապ|կարաս|կարագ։ Կարող ենք թւարկել ինչպէս բառերը, այնպէս էլ սիմուոլնորը՝ վերցնելով դրանք խմբի մէջ՝ կարա(պ|ս|գ)։

Այս օրինակը կարող էինք գրել նաեւ քառակուսի փակագծերով՝ կարա[պսգ], սակայն եթե պահանջուեր թւարկել տառազոյգ կամ աւելի բարդ արտայայտութիւններ, ապա ստիպուած կը լինէինք օգտագործել կլոր փակագծերը՝ կար(ապ|աս|ագ)։

Դիրքը տողի մէջ

Կանոնաւոր արտայայտութիւններում կարող ենք սահմանել որոնւող բառի դիրքը տողի մէջ՝

^ - տողի սկիզբ
$ - տողի վերջ

Օրինակ եթե գրենք ^բարեւ ապա կը ստանանք միայն տողի սկզբում գրուած «բարեւ» բառը։

Որոշ կարճ գրելաձեւեր

\s - բացատ
\n - նոր տող
\d - թիւ
\w - թիւ, տառ, _

\S - բացատից բացի ամէն ինչ
\N - նոր տողից բացի ամէն ինչ
\D - թւից բացի ամէն ինչ
\W - թւից, տառից, _ -ից բացի ամէն ինչ

* - աստղանիշը համարժէք է {0,}
+ - գումարիչը համարժէք է {1,}
? - հարցական նշանը համարժէք է {0, 1}

Դրօշակներ

Ծրագրաւորման տարբեր լեզուներում կանոնաւոր արտայայտութիւնները կը կարգաւորուեն «դրօշակ»-ներով։ Դրօշակները դրւում են կանոնաւոր արտայայտութիւնից յետոյ, ըստ լեզուի կառուցուածքի։

g - գտնել բոլոր համընկնումները։
i - ուշադրութիւն չդարձնել մեծատառով կամ փոքրատառով գրուած լինելուն։
m - փնտրել բազմատող տեքստում։ Եթե չդնենք այս դրօշակը ապա ^ (տողի սկիզբ) կը համարուի միայն առաջին տողի սկիզբը։

Վերջաբան

Կանոնաւոր արտայայտութիւն գրելիս յաջորդաբար նշում ենք փնտրուող «բառի» սիմուոլները կամ դրանց հնարաւոր տարբերակները։ Եթե անհրաժեշտ է փնտրել կէտ, փակագիծ կամ այլ յատուկ սիմուոլ, որը չպէտք է համարուի կանոնաւոր արտայայտութեան օպերատոր, ապա դրա դիմաց դնում ենք շեղ գիծ՝ \., \+, \\n, \( եւ այլն։

Յօդուածում նշուած օպերատորներից բացի կան նաեւ այլ՝ աւելի բարդ օպերատորներ, որոնք ըստ անհրաժեշտութեան կը բացայայտէք ժամանակի ընթացքում (։