⊗pyPmRELAB 72 of 129 menu

Python'da Düzenli İfadelerde Pozitif ve Negatif İnceleme

Bazen şu tür bir problemi çözmek gerekir: 'aaa' dizesini bul ve '!' ile değiştir, ancak sadece 'aaa' dan sonra 'x' geliyorsa, ve 'x''in kendisi değiştirilmesin. Eğer bu problemi 'doğrudan' çözmeye çalışırsak, başarılı olamayız:

txt = 'aaax baaa' res = re.sub('aaax', '!', txt) print(res) # '! baaa' yazdırır, oysa '!x baaa' istiyorduk

İleri İnceleme

Problemi çözmek için, 'x''in değiştirilmemesi gerektiğini söylemenin bir yoluna ihtiyaç var. Bu, (?= ) özel parantezleri kullanılarak yapılır, bunlar sadece bakar ama kendileriyle birlikte almazlar.

Bu parantezlere pozitif ileri inceleme denir. Pozitif - çünkü 'x' (bizim durumumuzda) olmalıdır - ancak o zaman değişiklik gerçekleşir.

Şimdi bu parantezleri problemimizi çözmek için kullanalım:

txt = 'aaax baaa' res = re.sub('aaa(?=x)', '!', txt) print(res) # '!x aaab yazdırır

Ayrıca negatif ileri inceleme vardır - (?! ) - bu, tam tersine, bir şeyin olmaması gerektiğini söyler. Bir sonraki örnekte, değişiklik sadece 'aaa' dan sonra 'x' OLMADIĞI zaman gerçekleşir:

txt = 'aaax aaab' res = re.sub('aaa(?!x)', '!', txt) print(res) # 'aaax !b' yazdırır

Geri İnceleme

Benzer şekilde pozitif geri inceleme vardır - (?<= ). Bir sonraki örnekte, değişiklik sadece 'aaa' dan önce 'x' olduğunda gerçekleşir:

txt = 'xaaa' res = re.sub('(?<=x)aaa', '!', txt) print(res) # 'x!' yazdırır

Ayrıca negatif geri inceleme vardır - (?<! ). Bir sonraki örnekte değişiklik sadece 'aaa' dan önce 'x' OLMADIĞI zaman gerçekleşir:

txt = 'baaa' res = re.sub('(?<!x)aaa', '!', txt) print(res) # 'b!' yazdırır

Pratik Problemler

Fonksiyon isimlerini içeren bir dize verilmiştir:

txt = 'func1() func2() func3()'

Dizeden fonksiyon isimlerinin bir dizisini elde edin.

Bir etiket içeren bir dize verilmiştir:

txt = '<a href="" class="eee" id="zzz">'

Bu etiketin öznitelik isimlerinin bir dizisini elde edin.

Değişkenler içeren bir dize verilmiştir:

txt = '$aaa $bbb $ccc xxxx'

Önünde dolar işareti bulunan alt dizileri elde edin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet