Դեպիեն ներսում հավաքածուների մեջ Python-ի կանոնավոր արտահայտություններում
Դեպիենը - նույնպես հատուկ նիշ է [ ]-ի ներսում
(բայց դրսում - ոչ): Եթե ձեզ անհրաժեշտ է բուն
դեպիենը որպես նիշ - ապա տեղադրեք այն այնտեղ,
որտեղ այն չի ընկալվի որպես խմբի բաժանարար:
Ինչու է դա կարևոր. դուք կարող եք ստեղծել նիշերի խումբ,
ինքներդ չնկատելով դա: Օրինակ, այսպես - '[:-@]' - դուք կարծում եք, որ
ընտրում եք երկ점, դեպիեն և շնիկ, բայց իրականում
ստացվում է նիշերի խումբ :-ի և @-ի միջև:
Այս խմբի մեջ մտնում են հետևյալ նիշերը. ? < = > :
Որտեղի՞ց են它们 առաջացել: ASCII աղյուսակից - երկ점ն ավելի փոքր համար ունի, քան շնիկը - և ստացվում է խումբ: Այսինքն բոլոր խմբերը ստացվում են ըստ ASCII աղյուսակի (ցանկության դեպքում դրանով կարելի է օգտվել):
Ինչպես պայքարել դրա դեմ. տեղադրեք դեպիեն նիշը
այնտեղ, որտեղ այն հաստատ չի ընկալվի
որպես խմբի նիշ, օրինակ, սկզբում կամ
վերջում (այսինքն [-ից հետո կամ ]-ից առաջ):
Կարելի է նաև էկրանավորել դեպիենը - այդ դեպքում
այն կնշանակի ինքն իրեն անկախ
դիրքից: Օրինակ, [:-@]-ի փոխարեն
գրել [:\-@] - և արդեն խումբ չի
լինի, այլ կլինեն երեք նիշ - երկ점,
դեպիեն և շնիկ @:
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
թիվ 1, ապա տառ 'a'-ից
մինչև 'z', ապա թիվ 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a-z]2', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! 1-2 ! !'
Օրինակ
Այժմ եկեք էկրանավորենք դեպիենը:
Որոնման ձևանմուշը հետևյալն է. թիվ
1, ապա տառ 'a', կամ
դեպիեն, կամ տառ 'z', ապա թիվ
2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a\-z]2', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! 1c2 !'
Օրինակ
Կարելի է պարզապես տեղափոխել դեպիենը՝ առանց այն էկրանավորելու.
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[az-]2', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! 1c2 !'
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
առաջին նիշը փոքրատառ տառեր կամ
դեպիեն '-' է, ապա երկու տառ
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-z-]xx', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! Axx ! @xx'
Օրինակ
Հաջորդ օրինակում որոնման ձևանմուշը հետևյալն է.
առաջին նիշը փոքրատառ, մեծատառ
տառեր կամ դեպիեն '-' է, ապա երկու տառ
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-zA-Z-]xx', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! @xx'
Օրինակ
Կարելի է տեղադրել դեպիենը երկու խմբերի միջև - այնտեղ այն հաստատ չի ստեղծի ևս մեկ խումբ.
txt = 'axx 9xx -xx @xx'
res = re.sub('[a-z-0-9]xx', '!', txt)
print(res)
Կոդի կատարման արդյունքը.
'! ! ! @xx'
Գործնական առաջադրանքներ
Տրված է տողը.
txt = 'xaz xBz xcz x-z x@z'
Գտեք բոլոր տողերը ըստ հետևյալ ձևանմուշի.
տառ 'x', մեծատառ կամ փոքրատառ
տառ կամ դեպիեն, տառ 'z'.
Տրված է տողը.
txt = 'xaz x$z x-z xcz x+z x%z x*z'
Գտեք բոլոր տողերը ըստ հետևյալ ձևանմուշի.
տառ 'x', ապա կամ դոլար, կամ
դեպիեն կամ գումարած, ապա տառ 'z'.