JavaScript regular ifadelerinde pozitiv we negativ gözegçilik
Käwagt şuňa meňzeş meseläni çözmek gerek: setiri
'aaa' tapmaly we ony '!' bilen çalşyrmaly,
emma diňe 'aaa'-dan soň
'x' bolsa, özi bolsa
'x' çalşyrylmaly däl. Eger meseläni
'göni görnüşde' çözmäge synanyşsak, netije alarys:
'aaax baaa'.replace(/aaax/g, '!'); // '! baaa' gaýtarar, emma biz '!x baaa' isleýärdik
Öňe gözegçilik
Mesele çözmek üçin, bizä
'x'-i çalşyrmaly däl diýip aýtmaly usul gerek. Bu
ýörite köşeli aýlawlar bilen edilýär (?= ),
olar diňe göz yetirýär, emma özleri bilen alyp gitmeýär.
Bu aýlawlar pozitiv öňe gözegçilik
diýilýär. Pozitiv - sebäbi 'x'
(biziň ýagdaýymyzda) bolmaly - diňe şonda
çalşyrylmak amala aşyr.
Geliň, bu aýlawlary biziň meselämizi çözmek üçin ulanaly:
'aaax aaab'.replace(/aaa(?=x)/g, '!'); // '!x aaab' gaýtarar
Negativ öňe gözegçilik hem bar
- (?! ) - ol, tersine, bir zadyň bolmaly däl diýýär. Aşakdaky mysalda,
çalşyrylmak diňe 'aaa'-dan soň
'x' bolmadyk ýagdaýynda amala aşar:
'aaax aaab'.replace(/aaa(?!x)/g, '!'); // 'aaax !b' gaýtarar
Yza gözegçilik
Şuňa meňzeş, pozitiv yza gözegçilik
bar - (?<= ). Aşakdaky
mysalda çalşyrylmak diňe
'aaa'-dan öň 'x' bolsa amala aşar:
'xaaa'.replace(/(?<=x)aaa/g, '!'); // 'x!' gaýtarar
Hem-de negativ yza gözegçilik
bar - (?<! ). Aşakdaky mysalda çalşyrylmak
diňe 'aaa'-dan öň
'x' bolmadyk ýagdaýynda amala aşar:
'baaa'.replace(/(?<!x)aaa/g, '!'); // 'b!' gaýtarar
Amaly meseläler
Funksiýa atlaryny öz içine alýan setir berlen:
let str = 'func1() func2() func3()';
Setirden funksiýa atlarynyň sanawyny alyň.
Tag bilen setir berlen:
let str = '<a href="" class="eee" id="zzz">';
Bu tag-yň atribut atlarynyň sanawyny alyň.
Üýtgeýänleri bilen setir berlen:
let str = '$aaa $bbb $ccc xxxx';
Öňünde dollaryň nyşany duran kiçi setirleri alyň.