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

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
26,517
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:

Kod:
    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:

Kod:
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
8,663
Mesajlar
141,556
Üyeler
3,455
Son üye
HaKo

Son kaynaklar

Son profil mesajları

Abdullah karaoglan falcon_browning Abdullah karaoglan wrote on falcon_browning's profile.
selamın aleyküm ses sistemindeki cızırtıyı hallettınızmi
"Araştırma, ne yaptığını bilmediğinde yaptığın şeydir." - Wernher von Braun
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Back
Top