Պայթուցիկ նիշերը Python-ի կանոնավոր արտահայտություններում
\d և \w նիշերի խմբերը շատ
ճկուն չեն: Նույնիսկ այնպիսի պարզ խնդիր,
որպիսին է գտնել բոլոր տառերը, բայց ոչ թվերը -
չի կարող լուծվել դրանց միջոցով: Նման խնդիրների համար
պետք է օգտագործել քառակուսի փակագծեր,
որոնք ներկայացնում են 'կամ' գործողությունը:
Քառակուսի փակագծերը փոխարինում են մեկ
նիշի, ներսում թվարկվածներից ցանկացածին: Օրինակ,
ահա այսպես. x[abc]x - մենք
ասում ենք, որ ծայրերում պետք է կանգնած լինեն x տառերը,
իսկ ներսում՝ մեկ նիշ՝ կամ 'a',
կամ 'b', կամ 'c':
Քառակուսի փակագծերից հետո կարելի է գրել
կրկնության օպերատորներ: Օրինակ, ահա այսպես.
x[abc]+x - մենք ասում ենք, որ x-երի ներսում
կարող է լինել ցանկացած քանակի 'a',
'b' և 'c' նիշեր -
ցանկացած համադրությամբ:
Կարելի է ոչ միայն թվարկել նիշերը, այլև
ստեղծել նիշերի խմբեր՝ գրելով երկու նիշերի միջև
դեպիս: Օրինակ, ահա այսպես.
[a-d] - մենք ստանում ենք բոլոր նիշերը
'a'-ից մինչև 'd':
Դիտարկենք օրինակներով:
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'a'-ից 'z':
Կոդի կատարման արդյունքը.
'! ! ! x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'a'-ից 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! xmx x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'A'-ից 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'xax ! xcx x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած թվանշան 0-ից
9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'xax ! ! ! x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած թվանշան 3-ից
7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'xax x1x ! ! x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'a'-ից 'z' կամ թվանշան 1-ից
9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! ! x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'a'-ից 'z' կամ տառ
'A'-ից 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! x5x x@x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև ցանկացած տառ
'a'-ից 'z' կամ թվանշաններ 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! ! x3x'
Օրինակ
Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը.
x-երի միջև տառեր 'a'-ից
'z' 1 և
ավելի քանակությամբ:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'xx ! ! ! x123x xa3x'
Օրինակ
Եկեք այնպես անենք, որ տառերի քանակը կարող է լինել նաև զրո.
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Արդյունքում մենք կստանանք.
'! ! ! ! x123x xa3x'
Օրինակ
Քառակուսի փակագծերի ներսում կարելի է նաև նշել էկրանավորված նիշեր: Եկեք գտնենք տառերի և թվանշանների հաջորդականություն, որը կրկնվում է զրո կամ ավելի անգամ.
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! x@x ! ! !'
Օրինակ
Եթե մեզ անհրաժեշտ է նշել ևս մեկ քառակուսի փակագիծ, ապա մենք այն նույնպես պարտադիր էկրանավորում ենք.
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! x3x'
Գործնական առաջադրանքներ
Տրված է տող.
txt = 'aba aea aca aza axa'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - 'b',
'e' կամ 'x' տառը:
Տրված է տող.
txt = 'a1a a3a a7a a9a aba'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - թվանշան
3-ից 6:
Տրված է տող.
txt = 'aba aea afa aha aga'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - տառ
'a'-ից 'g':
Տրված է տող.
txt = 'aba aea afa aha aga'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - տառ
'a'-ից 'f' և 'j'-ից
'z':
Տրված է տող.
txt = 'aAa aea aEa aJa a3a'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - տառ
'a'-ից 'f' և 'A'-ից
'D':
Տրված է տող.
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - փոքրատառ
լատինական տառեր, առանց մյուսներին դիպչելու:
Տրված է տող.
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - փոքրատառ և
մեծատառ լատինական տառեր, առանց մյուսներին դիպչելու:
Տրված է տող.
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Գրեք կանոնավոր արտահայտություն, որը կգտնի
հետևյալ կաղապարով. ծայրերում կանգնած են
'a' տառերը, իսկ դրանց միջև - փոքրատառ
լատինական տառեր և թվանշաններ, առանց մյուսներին դիպչելու: