Python regular ifadelerinde Ýörite nyşanlary ekranlaşdyrmak
Ýörite nyşanyň özüni aňlatmasyny üpjün etmek üçin ony ters çyzyk bilen ekranlamaly. Mysallar bilen göreliň.
Mysal
Aşakdaky mysalda regular ýazuwçysy gözleg şablonynyň şeýle
bolmasyny isläpdir: harf 'a', soňra goşmaça
'+', soňra harf 'x'. Şondan soň, ýazuwçy
'+' nyşanyny ekranlamandy we şonuň üçin hakykatda
gözleg şablonuny şeýle: harf 'a' bir ýa-da birnäçe
gezek, soňra harf 'x':
txt = 'a+x ax aax aaax'
res = re.sub('a+x', '!', txt)
print(res)
Kodyň netijesi:
'a+x ! ! !'
Mysal
Indi bolsa ýazuwçy goşmany ters çyzyk bilen ekranlady.
Indi gözleg şablony dogry görünýär: harf 'a',
soňra goşmaça '+', soňra harf 'x':
txt = 'a+x ax aax aaax'
res = re.sub('a\+x', '!', txt)
print(res)
Kodyň netijesi:
'! ax aax aaax'
Mysal
Bu mysalda şablon şeýle görünýär: harf 'a',
soňra nokat '.', soňra harf 'x':
txt = 'a.x abx azx'
res = re.sub('a\.x', '!', txt)
print(res)
Kodyň netijesi:
'! abx azx'
Mysal
Aşakdaky mysalda ýazuwçy nokady ekranlamagy ýatdan çykardy we ekranlanmadyk nokat islendik nyşany aňlatýandygy üçin regular ýazgysy ähli kiçi setirlere gabat geldi:
txt = 'a.x abx azx'
res = re.sub('a.x', '!', txt)
print(res)
Kodyň netijesi:
'! ! !'
Bellik
Nokady ekranlamagy ýatdan çykarsaňyz (ol özüni aňlatmaly bolanda) - muny aýtmazlyk hem mümkin:
res = re.sub('a.x', '!', 'a.x')
print(res) # islendik ýaly '!' gaýtarar
Göze dogry işleýär (sebäbi nokat islendik nyşany, şol
sanda adaty nokatany '.' aňladýar). Ýöne çalşyrylan
setiri üýtgetsek - ýalňyşlygymyzy göreris:
res = re.sub('a.x', '!', 'a.x abx azx')
print(res) # '! ! !' gaýtarar, ýöne '! abx azz' gözlenilýärdi
Ýörite nyşanlaryň we adaty nyşanlaryň sanawy
Adaty nyşany ekranlasaňyz - hiç hili ýaman zat bolmaz - ol özüni aňladýar. Kadadan çykyş - sanlar, olary ekranlap bolmaýar.
Bu nyşanyň ýörite nyşan ýa-da däldigine şübhelenmek ýygy duş gelýär. Käbirler hiç hili şübheli nyşanlaryň hemmesini ekranlaýarlar. Ýöne bu erbet taglymatdyr (regulary ters çyzyklar bilen hapaýar).
Ýörite nyşanlar: $ ^ . * + ? \ / {} [] () |
Ýörite nyşan däldir: @ : , ' " - _ = < > % # ~ `& !
Amaly meseleler
Setir berlen:
txt = 'a.a aba aea'
'a.a' setirini tapýan, ýöne galanlary almaýan
regular ýazyň.
Setir berlen:
txt = '2+3 223 2223'
'2+3' setirini tapýan, ýöne galanlary almaýan
regular ýazyň.
Setir berlen:
txt = '23 2+3 2++3 2+++3 345 567'
'2+3', '2++3', '2+++3' setirlerini
tapýan, ýöne galanlary almaýan regular ýazyň (goşmaçanyň
sany islendik bolup biler).
Setir berlen:
txt = '23 2+3 2++3 2+++3 445 677'
'23', '2+3', '2++3',
'2+++3' setirlerini tapýan, ýöne galanlary
almaýan regular ýazyň.
Setir berlen:
txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'
'*q+', '*qq+', '*qqq+' setirlerini
tapýan, ýöne galanlary almaýan regular ýazyň.
Setir berlen:
txt = '[abc] {abc} abc (abc) [abc]'
Kwadrat möýjürlerde ýerleşýän setirleri tapýan we olary
'!' bilen çalşyryan regular ýazyň.