Պայթուցիկ նիշերը Python-ի կանոնավոր արտահայտություններում

\d և \w նիշերի խմբերը շատ ճկուն չեն: Նույնիսկ այնպիսի պարզ խնդիր, որպիսին է գտնել բոլոր տառերը, բայց ոչ թվերը - չի կարող լուծվել դրանց միջոցով: Նման խնդիրների համար պետք է օգտագործել քառակուսի փակագծեր, որոնք ներկայացնում են 'կամ' գործողությունը:

Քառակուսի փակագծերը փոխարինում են մեկ նիշի, ներսում թվարկվածներից ցանկացածին: Օրինակ, ահա այսպես. x[abc]x - մենք ասում ենք, որ ծայրերում պետք է կանգնած լինեն x տառերը, իսկ ներսում՝ մեկ նիշ՝ կամ 'a', կամ 'b', կամ 'c':

Քառակուսի փակագծերից հետո կարելի է գրել կրկնության օպերատորներ: Օրինակ, ահա այսպես. x[abc]+x - մենք ասում ենք, որ x-երի ներսում կարող է լինել ցանկացած քանակի 'a', 'b' և 'c' նիշեր - ցանկացած համադրությամբ:

Կարելի է ոչ միայն թվարկել նիշերը, այլև ստեղծել նիշերի խմբեր՝ գրելով երկու նիշերի միջև դեպիս: Օրինակ, ահա այսպես. [a-d] - մենք ստանում ենք բոլոր նիշերը 'a'-ից մինչև 'd':

Դիտարկենք օրինակներով:

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'a'-ից 'z':

<

+Python+> txt = 'xax xbx xcx x@x' res = re.sub('x[a-z]x', '!', txt) print(res)

<

-python->

Կոդի կատարման արդյունքը.

python'! ! ! x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'a'-ից 'k':

pythontxt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! ! xmx x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'A'-ից 'Z':

pythontxt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'xax ! xcx x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած թվանշան 0-ից 9:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'xax ! ! ! x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած թվանշան 3-ից 7:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'xax x1x ! ! x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'a'-ից 'z' կամ թվանշան 1-ից 9:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! ! ! ! x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'a'-ից 'z' կամ տառ 'A'-ից 'Z':

pythontxt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! ! ! x5x x@x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև ցանկացած տառ 'a'-ից 'z' կամ թվանշաններ 1, 2:

pythontxt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! ! ! ! x3x'

Օրինակ

Այս օրինակում որոնման կաղապարն ունի հետևյալ տեսքը. x-երի միջև տառեր 'a'-ից 'z' 1 և ավելի քանակությամբ:

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'xx ! ! ! x123x xa3x'

Օրինակ

Եկեք այնպես անենք, որ տառերի քանակը կարող է լինել նաև զրո.

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)

print(res)

Արդյունքում մենք կստանանք.

python'! ! ! ! x123x xa3x'

Օրինակ

Քառակուսի փակագծերի ներսում կարելի է նաև նշել էկրանավորված նիշեր: Եկեք գտնենք տառերի և թվանշանների հաջորդականություն, որը կրկնվում է զրո կամ ավելի անգամ.

pythontxt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! x@x ! ! !'

Օրինակ

Եթե մեզ անհրաժեշտ է նշել ևս մեկ քառակուսի փակագիծ, ապա մենք այն նույնպես պարտադիր էկրանավորում ենք.

pythontxt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)

print(res)

Կոդի կատարման արդյունքը.

python'! ! ! x3x'

Գործնական առաջադրանքներ

Задание 1

Տրված է տող.

pythontxt = 'aba aea aca aza axa'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - 'b', 'e' կամ 'x' տառը:

Задание 2

Տրված է տող.

pythontxt = 'a1a a3a a7a a9a aba'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - թվանշան 3-ից 6:

Задание 3

Տրված է տող.

pythontxt = 'aba aea afa aha aga'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - տառ 'a'-ից 'g':

Задание 4

Տրված է տող.

pythontxt = 'aba aea afa aha aga'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - տառ 'a'-ից 'f' և 'j'-ից 'z':

Задание 5

Տրված է տող.

pythontxt = 'aAa aea aEa aJa a3a'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - տառ 'a'-ից 'f' և 'A'-ից 'D':

Задание 6

Տրված է տող.

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - փոքրատառ լատինական տառեր, առանց մյուսներին դիպչելու:

Задание 7

Տրված է տող.

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - փոքրատառ և մեծատառ լատինական տառեր, առանց մյուսներին դիպչելու:

Задание 8

Տրված է տող.

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Գրեք կանոնավոր արտահայտություն, որը կգտնի հետևյալ կաղապարով. ծայրերում կանգնած են 'a' տառերը, իսկ դրանց միջև - փոքրատառ լատինական տառեր և թվանշաններ, առանց մյուսներին դիպչելու: