Python-da Düzgün Ifadelerde Iň Sowly we Teres Sowly
Bäzen size şuňa meňzeş meseläni çözmek gerek bolar: 'aaa' setrini tapyň we ony '!' bilen çalyşyň, ýöne diňe 'aaa'-dan soň 'x' bar bolsa, 'x' bolsa özi çalyşylmaly däldir. Eger meseläni 'göni-meňzeden' çözmäge synanyşsak, ol ýalňyş bolar:
txt = 'aaax baaa'
res = re.sub('aaax', '!', txt)
print(res) # '! baaa', emma '!x baaa' islenýärdi
Sowly gözlemek
Meseläni çözmek üçin, biz 'x'-iň çalyşylmaly däldigini aýtmagyň usulyna eýe bolmaly. Bu (?= ) ýörite möýjenleri bilen amala aşyrylýar, olar diňe gözleýär, ýöne özleri bilen alyp gitmeýär.
Bu möýjenler iň sowly diýilýär. Iň sowly - sebäbi 'x' (biziň ýagdaýymyzda) bolmaly - diňe şonda çalyşma bolýar.
Geliň, bu möýjenleri biziň meselämizi çözmek üçin ulanýalyň:
txt = 'aaax baaa'
res = re.sub('aaa(?=x)', '!', txt)
print(res) # '!x aaab
Şeýle hem teres sowly bar - (?! ) - ol tersine, bir zadyň bolmaly däldigini aýdýar. Aşakdaky mysalda çalyşma diňe 'aaa'-dan soň 'x' bolmadyk ýagdaýda bolýar:
txt = 'aaax aaab'
res = re.sub('aaa(?!x)', '!', txt)
print(res) # 'aaax !b'
Yza gözlemek
Şuňa meňzeş, iň yz sowly bar - (?<= ). Aşakdaky mysalda çalyşma diňe 'aaa'-dan öň 'x' bolany ýagdaýynda bolýar:
txt = 'xaaa'
res = re.sub('(?<=x)aaa', '!', txt)
print(res) # 'x!'
We şeýle hem teres yz sowly bar - (?<! ). Aşakdaky mysalda çalyşma diňe 'aaa'-dan öň 'x' bolmadyk ýagdaýynda bolýar:
txt = 'baaa'
res = re.sub('(?<!x)aaa', '!', txt)
print(res) # 'b!'
Amaly wezipeler
Funksiýa atlaryny öz içine alýan setir berlen:
txt = 'func1() func2() func3()'
Setirden funksiýa atlarynyň sanawyny alyň.
Teg bilen setir berlen:
txt = '<a href="" class="eee" id="zzz">'
Bu teg üçin atribut atlarynyň sanawyny alyň.
Üýtgeýjiler bilen setir berlen:
txt = '$aaa $bbb $ccc xxxx'
Dollar belgisinden öň gelen kiçi setirleri alyň.