Regex, hemen tüm modern programlama dillerinin bir parçası ve tüm işletim sistemleri ve uygulamalarda kullanılan bir yapıdır. Regex, veriler içerisinde istediğimiz veriyi bulmaya yarayan bir çeşit algoritma veya yazım biçimidir diyebiliriz.
Regexi, aramak istediğimiz veriye karşılık gelen ifadeyi yazarak kullanırız. Örneğin mehmet kelimesini aramak kolaydır. Ancak aynı arama ile hem mehmet hem de mahmut sonucunu bulmak istersek, regex kullanırız. Bu basit örnektir ve bu sonsuz sayıda çeşitlendirilebilir.
Regex nerelerde kullanılır:
Regex hemen tüm programlama dillerinde ve uygulamalar içinde kullanılır. Bir veriyi bulmak, değiştirmek, doğrulamak, ayrıştırmak gibi operasyonlarda çok yardımcı olur. Toplu değişiklikler, parser yazmak konuları da örnek verilebilir.
Programlama dillerinde (Java, C#, C++, Python), işletim sistemlerinin komut satırlarında (powershell, bash vb.), uygulamalarda (Microsoft Word, Notepad++ vb.) gibi alanlarda regex kullanılabilmektedir.
Regex Kullanımı:
Regex kullanırken amacımız “düzenli ifade”yi bulmaktır. Örneğin kalem kelimesi ile aynı anda kelam kelimesini de bulmak istersek şu şekilde bir ifade yazmalıyız:
k[ae]l[ae]m
Ama bunu yazdığımızda, kilim kelimesi eşleşmez. Bu regexin eşleşeceği kelimeler şunlardır:
kalem
kalam
kelam
kelem
Kilim kelimesi de eşleşsin istersek şunu yazabiliriz:
k.l.m
Burada gördüğümüz nokta karakteri, herhangi bir karakteri temsil eder. Kullanımı bu şekilde gördüğümüze göre, metakarakterleri bilmemiz gerekir. Bunlar:
. Herhangi bir karakter demektir
+ Solundaki karakterin en az bir kez veya daha fazla tekrar etmesi demektir
? Solundaki karakter hiç olmayabilir veya bir defa olabilir
* Solundaki karakter hiç olmayabilir veya birden fazla tekrar edebilir
[ ] Karakter kümesi tanımlamak için
{ } Tekrar sayısı kümesi
– Aralık belirtmede kullanılır
^ Satır başlarını ifade eder, [] içerisinde ise tersi ve negatifi anlamındadır.
$ Satır sonu
\ Kaçış karakteri
| veya anlamındadır
\d Herhangi bir rakam [0-9]
\D Rakam olmayan herhangi bir simge [^0-9]
\w Herhangi bir harf, rakam veya alt çizgi (Türkçe harfler hariç) (alfanümerik) [a-zA-Z0-9_]
\W Alfanümerik olmayan [^a-zA-Z0-9_]
\s Herhangi bir boşluk karakteri [ \t\n\r\f]
\S Boşluk karakteri olmayan [^ \t\n\r\f]
Sırayla bu metakarakterleri örneklersek:
. kal.m -> kalam, kalbm, kal=m, kal4m, kal m … gibi birçok seçenek ile eşleşir
+ kal+m -> kalm, kallm, kalllllllllm …. gibi birçok seçenek ile eşleşir
? kal?m -> kam, kalm ile eşleşir
* kal*m -> kam, kalm, kallm, kalllllllm … gibi birçok seçenek ile eşleşir
[ ] kal[eEi]m -> kalem, kalEm, kalim ile eşleşir
– ile kullanım
kal[a-z]m -> kalam, kalbm, kalcm ….kalzm ile eşleşir
kal[1-3]m -> kal1b, kal2m, kal3m ile eşleşir
{ } kale{2}m -> kaleem ile eşleşir
{min,max} kullanımı
kale{0,2}m -> kalm, kalem, kaleem ile eşleşir
kale{0,}m -> kalm, kalem, kaleem, kaleeee…eeem gibi birçok seçenek ile eşleşir
^ ^kalem -> Satır başında geçen kalem ifadesi ile eşleşir
kal[^e]m -> kalim, kal9m, kal_m, kal#m gibi e yerine herhangi bir karakter gelebilir
$ kalem$ -> sadece satır sonunda olan kalem ile eşleşir
\ kal\.m -> kal.m ile eşleşir
| kal(em|bi)dir -> kalemdir, kalbidir ile eşleşir
\d kal\dm -> kal0m, kal1m, kal2m …. kal9m eşleşir
\w kal\wm -> kalam…kalzm, kal0m…kal9m, kalAm…kalZm ve kal_m ile eşleşir