Merhaba. Bu yazımda Visual Studio’ da pratik bir yöntem olan regex kullanarak Bul ve Değiştir’ i anlatacağım.
Bu yöntem özellikle uzun uzun kod bloklarına sahip dosyalarda belli bir pattern’e sahip bir değişiklik yapmak istediğiniz zaman işinize çok yarayacaktır.
Ben bu işlemi Visual Studio da açtığım bir web projesinde gerçekleştireceğim. Elimde aşağıdaki gibi bir form var;

Şimdi, bu formdaki her bir Html Helper’ ın sonuna (örnek olsun diye) soru işareti koymak istediğimizi düşünelim. Bu form kısa olduğu için bunu tek tek de yapabiliriz. Fazla vaktimizi almayacaktır. Ama önünüze daha uzun bir form çıktığında tek tek soru işareti koymak baya bir vaktinizi alacaktır ve eğer her bir parantezin sonuna soru işareti koymak istemiyorsanız parantezleri değiştirmek de yanlışa sebep olacaktır. Buna en pratik çözüm, Visual Studio daki Bul ve Değiştir seçeneklerinden Regex’ i kullanmaktır.
Şimdi bütün Html Helper’ larımızı yakalayacak bir regex yazalım. Bunun için ilk önce her Html Helper’ ın başında bulunan ‘@Html.’ yazısını kullanacağız. Html Helper’ lar bundan sonra rastgele harflerden oluşmaktadır. Bunun Regex’ deki karşılığı da nokta işaretidir. Nokta işareti herhangi bir karakter yerine geçmektedir. Ama unutmayalım ki ‘@Html.’ yazarken bir tane nokta kullandık. Peki bu noktalardan hangisinin regex in yorumlaması gereken nokta hangisinin normal nokta olduğunu nasıl belirteceğiz. Bunun için ters slash işaretini kullanacağız. Ters slash regex de escape karakteridir. Yani ifademizin son hali şöyle oldu; ‘ @Html\.. ‘
Nokta işareti sadece bir karakter içindir. ‘@Html\..’ dan sonra bütün karakterleri al diyebilmek için bir de + işaretine ihtiyacımız var; ‘@Html\..+’
Şimdi bu ifadeyi Bul ve Değiştire yazalım ve neleri yakaladığımızı görelim.

Ben yapıştırdım ve form içindeki bütün Html Helper’ ları yakaladım. Tabi boşluklardan arınması için sonuna \) işareti koydum. Çünkü Html Helper lar parantez ile kapanmaktadır. Regex’ de + işaretinden sonra hangi karakteri yazarsanız o karaktere kadar yakalayacaktır. Ben de bu yüzden + işaretinden sonra bir parantez koydum. Fakat Regex’ de parantez işareti gruplama elamanı olduğu için parantezden önce bir escape karakteri yani ters slash koyma ihtiyacı duydum.
İfademizin son hali şöyle oldu; ‘@Html\..+\)’
Unutmadan Regex’ i algılatmamız için Bul ve Değiştir’ deki Regex tuşuna basmamız gerekiyor.

Şimdi tek yapmamız gereken Değiştirme kısmına Regex’ in yakaladıklarının sonuna bir soru işareti bırak demek. Bunun içinde Regex’ in yakaladığı herşeyi varsayılan olarak temsil eden $0 karakterlerini kullanacağız ve sonuna bir soru işareti bırakacağız; $0?

Gördüğünüz gibi bütün Html Helper’ların sonuna bir soru işareti koymuş olduk.
Anlatacaklarım bu kadardı. Ama sizin yapabilecekleriniz tabiki bunlarla sınırlı değil. Bu işlemi Regex bul değiştir olan birçok yerde deneyebilirsiniz. Zamandan tasarruf etmenizi sağlayacaktır.
Regex ile daha çok bilgi edinmek için şu linki kullanabilirsiniz.
