Python regular ifadelerinde [ ] içindeki defis
Defis - şeýle-de [ ] içinde hususy nyşan
(ýöne daşynda - däl). Eger size defis özi hökmünde nyşan gerek bolsa - ony
toparyň bölüji hökmünde düşünülmez ýerde goýuň.
Bu nâme üçin möhüm: siz öziňiz duýman, nyşanlar toparyny döredip bilersiňiz.
Mysal üçin, şeýle - '[:-@]' - siz iki nokat, defis we at işini saýlaýandygyňyzy oýlaýarsyňyz,
ýöne aslynda : we @ arasyndaky nyşanlar topary çykýar.
Bu topara şu nyşanlar girýär: ? < = > :
Olar nireden gelýär? ASCII tablisysyndan - iki nokat at işinden kiçi nomere eýe - şonuň üçin topar çykýar. Ýagny, ähli toparlar ASCII tablisysy boýunça çykýar (isleýän bolsaňyz mundan peýdalanyp bilersiňiz).
Bu bilen nädip göreşmeli: defis nyşanyny şol ýerde goýuň,
ýerinde toparyň nyşany hökmünde düşünülmez, mysal üçin, başynda ýa-da
aýagynda (ýagny [dan soň ýa-da
]dan öň).
Defisi ekranlaýan bolsaňyz hem bolýar - onda
ol ýerine garamazdan, özüni aňladar.
Mysal üçin, [:-@] ýerine
[:\-@] ýazmak - we artık topar bolmaz,
ýöne üç nyşan bolýar - iki nokat,
defis we at işi @.
Mysal
Indiki mysalda gözleg şablony şeýle:
san 1, soňra 'a'
-dan 'z'-a çenli harp,
soňra san 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a-z]2', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! 1-2 ! !'
Mysal
Indi defisi ekranlaýaly. Netijede
gözleg şablony şeýle: san
1, soňra 'a' harp,
ýa-da defis, ýa-da 'z' harp,
soňra san 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a\-z]2', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! ! 1c2 !'
Mysal
Defisi ekranlamazdan, diňe ony ýerini üýtgetmek hem bolýar:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[az-]2', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! ! 1c2 !'
Mysal
Indiki mysalda gözleg şablony şeýle:
birinci nyşan - kiçi harplar ýa-da
defis '-', soňra iki sany
'x' harp:
txt = 'axx Axx -xx @xx'
res = re.sub('[a-z-]xx', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! Axx ! @xx'
Mysal
Indiki mysalda gözleg şablony şeýle:
birinci nyşan - kiçi, uly
harplar ýa-da defis '-', soňra iki sany
'x' harp:
txt = 'axx Axx -xx @xx'
res = re.sub('[a-zA-Z-]xx', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! ! ! @xx'
Mysal
Defisi iki toparyň arasyna goýmak hem bolýar - ol ýerde ol elbetde başga bir topar döretmez:
txt = 'axx 9xx -xx @xx'
res = re.sub('[a-z-0-9]xx', '!', txt)
print(res)
Kody ýerine ýetirmegiň netijesi:
'! ! ! @xx'
Amaly meseleler
Setir berlen:
txt = 'xaz xBz xcz x-z x@z'
Şu şablona görä ähli setirleri tapyň:
'x' harp, uly ýa-da kiçi
harp ýa-da defis, 'z' harp.
Setir berlen:
txt = 'xaz x$z x-z xcz x+z x%z x*z'
Şu şablona görä ähli setirleri tapyň:
'x' harp, soňra ýa-da dollar, ýa-da
defis ýa-da goşmaça, soňra 'z' harp.