Vijëza brenda grupeve në shprehjet e rregullta të Python
Vijëza - është gjithashtu një karakter special brenda [ ]
(por jashtë - jo). Nëse keni nevojë për vijëzën vetë
si karakter - atëherë vendoseni atje,
ku ajo nuk do të perceptohet si ndarës
i grupit.
Pse kjo është e rëndësishme: ju mund të bëni një grup
karakteresh, pa e vënë re vetë. Për shembull,
kështu - '[:-@]' - ju mendoni se
po zgjidhni dy pika, vijëz dhe simbolin @, por në
të vërtetë rezulton një grup karakteresh midis
: dhe @. Në këtë grup përfshihen
karakteret e mëposhtme: ? < = > :
Nga erdhën ata? Nga tabela ASCII - dy pikat kanë numër më të vogël se simboli @ - dhe kështu fitohet grupi. Domethënë të gjitha grupet fitohen sipas tabelës ASCII (nëse dëshironi kësaj mund t'i përdorni).
Si të luftohet kjo: vendosni karakterin
vijëz atje, ku me siguri nuk do të perceptohet
si karakter grupi, për shembull, në fillim ose
në fund (domethënë pas [ ose para
]).
Mund gjithashtu të ekranizoni vijëzën - atëherë
ajo do të tregojë vetveten pavarësisht
nga pozita. Për shembull, në vend të [:-@]
të shkruani [:\-@] - dhe grupi nuk do të
jetë më, por do të ketë tre karaktere - dy pika,
vijëz dhe simbolin @.
Shembull
Në shembullin vijues modeli i kërkimit është:
shifra 1, pastaj shkronja nga 'a'
deri në 'z', pastaj shifra 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a-z]2', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! 1-2 ! !'
Shembull
Tani le ta ekranizojmë vijëzën. Në
rezultat modeli i kërkimit është: shifra
1, pastaj shkronja 'a', ose
vijëz, ose shkronja 'z', pastaj shifra
2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a\-z]2', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! 1c2 !'
Shembull
Mund thjesht të ndërrohet vendi i vijëzës, pa e ekranizuar atë:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[az-]2', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! 1c2 !'
Shembull
Në shembullin vijues modeli i kërkimit është:
karakteri i parë - janë shkronja të vogla ose
vijëz '-', pastaj dy shkronja
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-z-]xx', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! Axx ! @xx'
Shembull
Në shembullin vijues modeli i kërkimit është:
karakteri i parë - janë shkronja të vogla, të mëdha
ose vijëz '-', pastaj dy shkronja
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-zA-Z-]xx', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! @xx'
Shembull
Mund të vendoset vijëza midis dy grupeve - aty ajo me siguri nuk do të krijojë një grup tjetër:
txt = 'axx 9xx -xx @xx'
res = re.sub('[a-z-0-9]xx', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! @xx'
Detyra praktike
Është dhënë stringu:
txt = 'xaz xBz xcz x-z x@z'
Gjeni të gjitha stringjet sipas modelit vijues:
shkronja 'x', shkronjë e madhe ose e vogël
ose vijëz, shkronja 'z'.
Është dhënë stringu:
txt = 'xaz x$z x-z xcz x+z x%z x*z'
Gjeni të gjitha stringjet sipas modelit vijues:
shkronja 'x', pastaj ose dollar, ose
vijëz ose plus, pastaj shkronja 'z'.