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

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
21,912
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.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,897
Mesajlar
100,674
Üyeler
2,496
Son üye
can12

Son kaynaklar

Son profil mesajları

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.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top