Regex ile bul/degiştir (search/replace) yapmak

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
22,117
Kıytırık editörleri iyi editörlerden ayıran önemli özelliklerden birisi regex kullanarak search/replace yapabilmek. Mesela aşağıdaki dosyayı düşünelim:

C++:
    BLOCK_HARDWARE_INFO,
    BLOCK_SPEAKER_IMPEDANCE,
    BLOCK_INPUT,
    BLOCK_VOLUME,
    BLOCK_GAIN_XLR,
    BLOCK_GAIN_RCA,
    BLOCK_MONO_STEREO,
    BLOCK_TRIGGER_MODE,
    BLOCK_FILTER,
    BLOCK_CARTRIDGE,
    BLOCK_BASS,
    BLOCK_TREBLE,
    BLOCK_HEADPHONE_PREAMP,
    BLOCK_BYPASS,
    BLOCK_ACTIVITY_TIMER,
    BLOCK_NETWORK_SETTINGS,
    BLOCK_BACKGROUND_COLOR,
    BLOCK_DISPLAY_BRIGHTNESS,
    BLOCK_POWER_CALC_METHOD,

Burada her bir satırı öyle bir değiştireceğiz ki, satırdaki ifadeyi bir macro içerisine alacağız. Yani ilk iki satır şöyle olacak:

C++:
CONFIG_BLOCKDEF(BLOCK_HARDWARE_INFO)
CONFIG_BLOCKDEF(BLOCK_SPEAKER_IMPEDANCE)

Bunu emacs editörünün "Query replace regexp" komutu ile tek hamlede yapabiliyoruz. Tek tek değiştirme ile yapılabilecek olası hataların da önüne geçilmiş oluyor.

1692196527050.png
 
Burada aratılacak regex ve onun yerine yazılacak ifade aşağıda

1692196739698.png


Regex'in tercümesi şu: 0 veya daha fazla boşluk karakteri bul. Sonra BLOCK_ yazısını bul. Sonra, virgüle kadar olan ifadeyi "1" numaralı değişkene at.

Yerine yazılacak ifadenin tercümesi de şu: CONFIG_BLOCKDEF( ile başla. Sonra da "1" numaralı değişkendeki değeri yaz. Sonra da ) koy.
 
Bu kullandığım nispeten basit bir regex. Çok daha karmaşık yapılar kurmak mümkün. Değişik alternatifleri test etmek için aşağıdaki site kullanılabilir.


Her yazılımın regex desteği birbirine denk olmayabiliyor, ama mantık büyük ölçüde aynı. Sadece istisnaları bilmek yeterlidir.
 

Forum istatistikleri

Konular
6,025
Mesajlar
102,840
Üyeler
2,532
Son üye
Tayfun

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top