{"id":45205,"date":"2026-10-15T21:01:50","date_gmt":"2026-10-15T18:01:50","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/"},"modified":"2026-10-15T21:01:50","modified_gmt":"2026-10-15T18:01:50","slug":"regular-expressions-regex-metin-avciliginin-gucu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/","title":{"rendered":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc"},"content":{"rendered":"<h2>Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc<\/h2>\n<p>Geli\u015ftiriciler, veri bilimciler veya metinlerle yo\u011fun bir \u015fekilde \u00e7al\u0131\u015fan herkes i\u00e7in, b\u00fcy\u00fck veri k\u00fcmelerinde belirli kal\u0131plar\u0131 bulmak, de\u011fi\u015ftirmek veya do\u011frulamak bazen kabusa d\u00f6n\u00fc\u015febilir. Peki ya bu s\u00fcreci otomatikle\u015ftiren, sihirli bir anahtar olsa? \u0130\u015fte tam da burada <strong>Regular Expressions (Regex)<\/strong> yani <strong>D\u00fczenli \u0130fadeler<\/strong> devreye giriyor. Bu g\u00fc\u00e7l\u00fc ara\u00e7, metin i\u015fleme g\u00f6revlerinizi inan\u0131lmaz derecede kolayla\u015ft\u0131rabilir. Bu makalede, Regex&#8217;in ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenece\u011fiz. Amac\u0131m\u0131z, bu konuya tamamen yabanc\u0131 olanlar\u0131n bile Regex&#8217;in temel prensiplerini anlay\u0131p kendi projelerinde rahatl\u0131kla kullanabilmesini sa\u011flamak.<\/p>\n<p>Regex, asl\u0131nda belirli bir metin kal\u0131b\u0131n\u0131 tan\u0131mlamak i\u00e7in kullan\u0131lan \u00f6zel bir karakter dizisidir. Bu kal\u0131plar, say\u0131lar, harfler, semboller veya bunlar\u0131n kombinasyonlar\u0131 olabilir. Bir web formundaki e-posta adresini do\u011frulamak m\u0131 istiyorsunuz? Bir log dosyas\u0131ndaki belirli hata kodlar\u0131n\u0131 mu ar\u0131yorsunuz? Ya da bir metindeki t\u00fcm URL&#8217;leri mi bulmak istiyorsunuz? \u0130\u015fte t\u00fcm bu ve benzeri g\u00f6revler i\u00e7in Regex bi\u00e7ilmi\u015f kaftand\u0131r. Geli\u015ftiriciler i\u00e7in vazge\u00e7ilmez bir ara\u00e7 olan Regex, \u00f6zellikle veri temizleme, veri do\u011frulama, metin analizi ve otomatik metin i\u015fleme gibi alanlarda hayat kurtar\u0131c\u0131d\u0131r. Bu makale boyunca, Regex&#8217;in temel yap\u0131 ta\u015flar\u0131ndan ba\u015flayarak, daha karma\u015f\u0131k kal\u0131plar olu\u015fturmay\u0131 ve bunlar\u0131 pratik \u00f6rneklerle peki\u015ftirmeyi hedefliyoruz. Haz\u0131rsan\u0131z, metin avc\u0131l\u0131\u011f\u0131n\u0131n bu b\u00fcy\u00fcleyici d\u00fcnyas\u0131na ad\u0131m atal\u0131m!<\/p>\n<h2>Neden Regex \u00d6\u011frenmeliyiz?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, veriler her yerde ve her formatta kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Bir web sitesindeki kullan\u0131c\u0131 girdilerinden, sunucu log dosyalar\u0131na, sosyal medya ak\u0131\u015flar\u0131ndan, finansal raporlara kadar metin tabanl\u0131 verilerle s\u00fcrekli etkile\u015fim halindeyiz. Bu devasa veri okyanusunda, belirli bilgileri h\u0131zl\u0131 ve do\u011fru bir \u015fekilde bulmak, \u00e7\u0131karmak veya de\u011fi\u015ftirmek kritik \u00f6neme sahip. \u0130\u015fte bu noktada <strong>D\u00fczenli \u0130fadeler (Regex)<\/strong> devreye girerek, karma\u015f\u0131k metin i\u015fleme g\u00f6revlerini otomatikle\u015ftirmemizi sa\u011fl\u0131yor. Peki, bu \u00f6\u011frenme s\u00fcrecine neden zaman ay\u0131rmal\u0131y\u0131z? \u00d6ncelikle, Regex \u00f6\u011frenmek, metinle \u00e7al\u0131\u015fma verimlili\u011finizi kat kat art\u0131r\u0131r. Manuel olarak saatlerce s\u00fcrebilecek bir i\u015flemi, birka\u00e7 sat\u0131rl\u0131k bir Regex ifadesiyle saniyeler i\u00e7inde tamamlayabilirsiniz. Bu, \u00f6zellikle zaman\u0131n k\u0131s\u0131tl\u0131 oldu\u011fu projelerde b\u00fcy\u00fck bir avantaj sa\u011flar.<\/p>\n<p>\u0130kinci olarak, Regex, veri do\u011frulama (validation) konusunda vazge\u00e7ilmezdir. Bir kullan\u0131c\u0131dan al\u0131nan e-posta adresinin, telefon numaras\u0131n\u0131n veya \u015fifrenin belirli bir formatta olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in Regex kullan\u0131l\u0131r. Bu, hem kullan\u0131c\u0131 deneyimini iyile\u015ftirir hem de sisteminize giren verinin kalitesini g\u00fcvence alt\u0131na al\u0131r. \u00d6rne\u011fin, bir e-posta adresinin ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in basit bir Regex ifadesiyle, &#8220;@&#8221; sembol\u00fcn\u00fcn varl\u0131\u011f\u0131n\u0131, alan ad\u0131n\u0131n yap\u0131s\u0131n\u0131 ve uzant\u0131s\u0131n\u0131 do\u011frulayabilirsiniz. Bu t\u00fcr kontroller, uygulaman\u0131z\u0131n g\u00fcvenli\u011fini ve kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fcs\u00fc, Regex, veri \u00e7\u0131karma (data extraction) ve d\u00f6n\u00fc\u015f\u00fcm (transformation) i\u00e7in de g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bir metin blo\u011fundan belirli bilgileri (\u00f6rne\u011fin, t\u00fcm tarihleri, saatleri, para birimlerini veya \u00f6zel kodlar\u0131) \u00e7ekmek istedi\u011finizde, Regex size arad\u0131\u011f\u0131n\u0131z\u0131 bulma konusunda ola\u011fan\u00fcst\u00fc bir yetenek sunar. Ayr\u0131ca, bulunan bu verileri farkl\u0131 bir formata d\u00f6n\u00fc\u015ft\u00fcrmek de Regex ile m\u00fcmk\u00fcnd\u00fcr. D\u00f6rd\u00fcnc\u00fcs\u00fc, Regex, programlama dillerinin (Python, JavaScript, Java, PHP vb.) \u00e7o\u011funda desteklenen evrensel bir standartt\u0131r. Bu, bir dilde \u00f6\u011frendi\u011finiz Regex bilgisini di\u011fer dillere kolayca ta\u015f\u0131yabilece\u011finiz anlam\u0131na gelir. Son olarak, Regex, sadece geli\u015ftiriciler i\u00e7in de\u011fil, ayn\u0131 zamanda sistem y\u00f6neticileri, veri analistleri ve metinlerle \u00e7al\u0131\u015fan herkes i\u00e7in de\u011ferli bir beceridir. Bir log dosyas\u0131n\u0131 analiz etmekten, bir veritaban\u0131ndaki metinleri temizlemeye kadar geni\u015f bir kullan\u0131m alan\u0131na sahiptir. Bu nedenle, Regex \u00f6\u011frenmek, dijital ara\u00e7 \u00e7antan\u0131za ekleyece\u011finiz en de\u011ferli becerilerden biri olacakt\u0131r.<\/p>\n<h2>Temel Yap\u0131 Ta\u015flar\u0131: Regex&#8217;in Alfabe ve Kurallar\u0131<\/h2>\n<p>Regex&#8217;in temellerini anlamak i\u00e7in \u00f6ncelikle onun kendi &#8220;alfabesini&#8221; ve bu alfabeyi kullanarak nas\u0131l kelimeler (yani kal\u0131plar) olu\u015fturdu\u011fumuzu \u00f6\u011frenmemiz gerekiyor. T\u0131pk\u0131 bir dilin harflerden, kelimelerden ve c\u00fcmlelerden olu\u015fmas\u0131 gibi, Regex de \u00f6zel karakterler ve metin karakterlerinin birle\u015fimiyle olu\u015fur. Bu b\u00f6l\u00fcm, Regex&#8217;in en temel yap\u0131 ta\u015flar\u0131n\u0131 tan\u0131tacak ve bu ta\u015flar\u0131 kullanarak basit ama etkili kal\u0131plar olu\u015fturman\u0131n yollar\u0131n\u0131 g\u00f6sterecektir.<\/p>\n<p>En temel Regex karakterleri, asl\u0131nda arad\u0131\u011f\u0131m\u0131z metin karakterlerinin kendisidir. \u00d6rne\u011fin, &#8220;kedi&#8221; kelimesini aramak istiyorsak, Regex ifadesi de do\u011frudan <code>kedi<\/code> olacakt\u0131r. Ancak i\u015fler, karakterlerin birle\u015fiminden daha fazlas\u0131n\u0131 yapmaya ba\u015flad\u0131\u011f\u0131m\u0131zda ilgin\u00e7le\u015fir. \u0130\u015fte burada \u00f6zel karakterler (metacharacters) devreye girer. Bu karakterler, kendileri d\u0131\u015f\u0131nda \u00f6zel bir anlam ta\u015f\u0131rlar.<\/p>\n<ul>\n<li><strong>Nokta (<code>.<\/code>):<\/strong> Bu karakter, yeni sat\u0131r karakteri (<code>\\n<\/code>) hari\u00e7 herhangi bir tek karakterle e\u015fle\u015fir. \u00d6rne\u011fin, <code>a.b<\/code> ifadesi &#8220;aab&#8221;, &#8220;acb&#8221;, &#8220;a1b&#8221;, &#8220;a-b&#8221; gibi dizelerle e\u015fle\u015fir.<\/li>\n<li><strong>Karakter S\u0131n\u0131flar\u0131 (<code>[...]<\/code>):<\/strong> Belirli bir karakter k\u00fcmesinden herhangi bir karakterle e\u015fle\u015fmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, <code>[aeiou]<\/code> ifadesi herhangi bir sesli harfle e\u015fle\u015fir. <code>[0-9]<\/code> ise herhangi bir rakamla e\u015fle\u015fir. Aral\u0131klar\u0131 birle\u015ftirebilirsiniz: <code>[a-zA-Z0-9]<\/code> alfan\u00fcmerik karakterlerle e\u015fle\u015fir.<\/li>\n<li><strong>\u0130stisna Karakter S\u0131n\u0131flar\u0131 (<code>[^...]<\/code>):<\/strong> Bir karakter s\u0131n\u0131f\u0131n\u0131n i\u00e7indeki karakterler d\u0131\u015f\u0131ndaki herhangi bir karakterle e\u015fle\u015fir. \u00d6rne\u011fin, <code>[^0-9]<\/code> ifadesi rakam olmayan herhangi bir karakterle e\u015fle\u015fir.<\/li>\n<li><strong>Tekrarlay\u0131c\u0131lar (Quantifiers):<\/strong> Bu operat\u00f6rler, \u00f6nceki karakterin veya grubun ka\u00e7 kez tekrarlanaca\u011f\u0131n\u0131 belirtir.<\/li>\n<ul>\n<li><strong><code>*<\/code> (S\u0131f\u0131r veya daha fazla):<\/strong> \u00d6nceki \u00f6\u011fenin s\u0131f\u0131r veya daha fazla kez tekrarlanmas\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>ab*c<\/code> ifadesi &#8220;ac&#8221;, &#8220;abc&#8221;, &#8220;abbc&#8221;, &#8220;abbbc&#8221; ile e\u015fle\u015fir.<\/li>\n<li><strong><code>+<\/code> (Bir veya daha fazla):<\/strong> \u00d6nceki \u00f6\u011fenin bir veya daha fazla kez tekrarlanmas\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>ab+c<\/code> ifadesi &#8220;abc&#8221;, &#8220;abbc&#8221;, &#8220;abbbc&#8221; ile e\u015fle\u015fir, ancak &#8220;ac&#8221; ile e\u015fle\u015fmez.<\/li>\n<li><strong><code>?<\/code> (S\u0131f\u0131r veya bir):<\/strong> \u00d6nceki \u00f6\u011fenin s\u0131f\u0131r veya bir kez tekrarlanmas\u0131yla e\u015fle\u015fir. Bu, \u00f6nceki \u00f6\u011feyi iste\u011fe ba\u011fl\u0131 hale getirir. \u00d6rne\u011fin, <code>colou?r<\/code> ifadesi &#8220;color&#8221; ve &#8220;colour&#8221; ile e\u015fle\u015fir.<\/li>\n<li><strong><code>{n}<\/code> (Tam olarak n kez):<\/strong> \u00d6nceki \u00f6\u011fenin tam olarak n kez tekrarlanmas\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>a{3}<\/code> ifadesi &#8220;aaa&#8221; ile e\u015fle\u015fir.<\/li>\n<li><strong><code>{n,}<\/code> (En az n kez):<\/strong> \u00d6nceki \u00f6\u011fenin en az n kez tekrarlanmas\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>a{2,}<\/code> ifadesi &#8220;aa&#8221;, &#8220;aaa&#8221;, &#8220;aaaa&#8221; ile e\u015fle\u015fir.<\/li>\n<li><strong><code>{n,m}<\/code> (En az n, en fazla m kez):<\/strong> \u00d6nceki \u00f6\u011fenin en az n, en fazla m kez tekrarlanmas\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>a{2,4}<\/code> ifadesi &#8220;aa&#8221;, &#8220;aaa&#8221;, &#8220;aaaa&#8221; ile e\u015fle\u015fir.<\/li>\n<\/ul>\n<li><strong>Ka\u00e7\u0131\u015f Karakteri (<code>\\<\/code>):<\/strong> \u00d6zel anlam\u0131 olan karakterleri normal karakterler olarak kullanmak veya \u00f6zel karakterlerle e\u015fle\u015fmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir metinde ger\u00e7ek bir nokta karakterini aramak istiyorsak, <code>\\.<\/code> \u015feklinde kullan\u0131r\u0131z. <code>\\d<\/code> rakamlarla (<code>[0-9]<\/code> ile ayn\u0131), <code>\\w<\/code> kelime karakterleriyle (harf, rakam ve alt \u00e7izgi: <code>[a-zA-Z0-9_]<\/code>) ve <code>\\s<\/code> bo\u015fluk karakterleriyle (bo\u015fluk, sekme, yeni sat\u0131r vb.) e\u015fle\u015fir. Bunlar\u0131n tersleri de vard\u0131r: <code>\\D<\/code> rakam olmayanlar, <code>\\W<\/code> kelime olmayanlar ve <code>\\S<\/code> bo\u015fluk olmayanlar.<\/li>\n<li><strong>Ba\u015flang\u0131\u00e7 ve Biti\u015f \u0130\u015faretleyicileri:<\/strong><\/li>\n<ul>\n<li><strong><code>^<\/code> (Ba\u015flang\u0131\u00e7):<\/strong> Bir dizenin ba\u015flang\u0131c\u0131yla e\u015fle\u015fir. \u00d6rne\u011fin, <code>^Merhaba<\/code> ifadesi sadece &#8220;Merhaba d\u00fcnya&#8221; gibi bir dizenin ba\u015f\u0131nda &#8220;Merhaba&#8221; varsa e\u015fle\u015fir.<\/li>\n<li><strong><code>$<\/code> (Biti\u015f):<\/strong> Bir dizenin sonuyla e\u015fle\u015fir. \u00d6rne\u011fin, <code>d\u00fcnya$<\/code> ifadesi sadece &#8220;Merhaba d\u00fcnya&#8221; gibi bir dizenin sonunda &#8220;d\u00fcnya&#8221; varsa e\u015fle\u015fir.<\/li>\n<\/ul>\n<\/ul>\n<p>Bu temel yap\u0131 ta\u015flar\u0131n\u0131 bir araya getirerek olduk\u00e7a karma\u015f\u0131k kal\u0131plar olu\u015fturabiliriz. \u00d6rne\u011fin, bir telefon numaras\u0131n\u0131 do\u011frulamak i\u00e7in \u015fu gibi bir ifade kullanabiliriz: <code>^\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$<\/code>. Bu ifadeyi par\u00e7alara ay\u0131r\u0131rsak: <code>^<\/code> (ba\u015flang\u0131\u00e7), <code>\\(?<\/code> (iste\u011fe ba\u011fl\u0131 sol parantez), <code>\\d{3}<\/code> (\u00fc\u00e7 rakam), <code>\\)?<\/code> (iste\u011fe ba\u011fl\u0131 sa\u011f parantez), <code>[-.\\s]?<\/code> (iste\u011fe ba\u011fl\u0131 tire, nokta veya bo\u015fluk), <code>\\d{3}<\/code> (\u00fc\u00e7 rakam), <code>[-.\\s]?<\/code> (iste\u011fe ba\u011fl\u0131 tire, nokta veya bo\u015fluk), <code>\\d{4}<\/code> (d\u00f6rt rakam), <code>$<\/code> (biti\u015f). Bu, farkl\u0131 formatlardaki telefon numaralar\u0131n\u0131 yakalayabilir.<\/p>\n<h2>Uygulamal\u0131 K\u0131s\u0131m: Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Regex Kullan\u0131m\u0131<\/h2>\n<p>Teorik bilgileri \u00f6\u011frendik, \u015fimdi bu bilgileri ger\u00e7ek d\u00fcnya senaryolar\u0131na nas\u0131l uygulayaca\u011f\u0131m\u0131za bakal\u0131m. Bu b\u00f6l\u00fcmde, s\u0131k kar\u015f\u0131la\u015f\u0131lan baz\u0131 problemler i\u00e7in Regex ifadeleri olu\u015fturacak ve bu ifadelerin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Amac\u0131m\u0131z, Regex&#8217;in sadece soyut bir kavram olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda pratik ve g\u00fc\u00e7l\u00fc bir ara\u00e7 oldu\u011funu g\u00f6stermektir.<\/p>\n<h3>Senaryo 1: E-posta Adresi Do\u011frulama<\/h3>\n<p>Bir web uygulamas\u0131nda kullan\u0131c\u0131lar\u0131n girdi\u011fi e-posta adreslerinin ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek, en yayg\u0131n Regex kullan\u0131m alanlar\u0131ndan biridir. Basit bir e-posta adresi genellikle \u015fu yap\u0131dad\u0131r: <code>kullaniciadi@alanadi.uzanti<\/code>. Ancak bu yap\u0131n\u0131n farkl\u0131 varyasyonlar\u0131 olabilir. Genel kabul g\u00f6rm\u00fc\u015f bir Regex ifadesi \u015fu \u015fekilde olabilir:<\/p>\n<pre><code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$<\/code><\/pre>\n<p>Bu ifadeyi inceleyelim:<\/p>\n<ul>\n<li><code>^<\/code>: Dizinin ba\u015flang\u0131c\u0131.<\/li>\n<li><code>[a-zA-Z0-9._%+-]+<\/code>: Kullan\u0131c\u0131 ad\u0131 k\u0131sm\u0131. K\u00fc\u00e7\u00fck\/b\u00fcy\u00fck harfler, rakamlar ve \u00f6zel karakterlerden (<code>.<\/code>, <code>_<\/code>, <code>%<\/code>, <code>+<\/code>, <code>-<\/code>) olu\u015fan bir veya daha fazla karakter dizisi.<\/li>\n<li><code>@<\/code>: Zorunlu &#8220;at&#8221; sembol\u00fc.<\/li>\n<li><code>[a-zA-Z0-9.-]+<\/code>: Alan ad\u0131 k\u0131sm\u0131. K\u00fc\u00e7\u00fck\/b\u00fcy\u00fck harfler, rakamlar, noktalar ve tirelerden olu\u015fan bir veya daha fazla karakter dizisi.<\/li>\n<li><code>\\.<\/code>: Alan ad\u0131 ile uzant\u0131 aras\u0131ndaki zorunlu nokta.<\/li>\n<li><code>[a-zA-Z]{2,}<\/code>: Uzant\u0131 k\u0131sm\u0131. En az iki harften olu\u015fan bir dizi (\u00f6rne\u011fin, .com, .org, .net, .co.uk).<\/li>\n<li><code>$<\/code>: Dizinin sonu.<\/li>\n<\/ul>\n<p>Bu ifade, \u00e7o\u011fu ge\u00e7erli e-posta adresini yakalayacakt\u0131r. Ancak unutulmamal\u0131d\u0131r ki, RFC standartlar\u0131na tam uyumlu bir e-posta Regex&#8217;i olduk\u00e7a karma\u015f\u0131k olabilir. Bu ifade, pratik kullan\u0131m i\u00e7in yeterli bir dengedir.<\/p>\n<h3>Senaryo 2: URL Bulma<\/h3>\n<p>Bir metin i\u00e7erisinden t\u00fcm URL&#8217;leri (web adreslerini) \u00e7\u0131karmak istedi\u011fimizde de Regex devreye girer. URL&#8217;ler genellikle <code>http:\/\/<\/code>, <code>https:\/\/<\/code> veya <code>www.<\/code> ile ba\u015flar ve \u00e7e\u015fitli karakterler i\u00e7erir.<\/p>\n<pre><code>(https?:\\\/\\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\\/\\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})<\/code><\/pre>\n<p>Bu ifade biraz daha karma\u015f\u0131k g\u00f6r\u00fcnse de, temel mant\u0131\u011f\u0131 \u015f\u00f6yledir:<\/p>\n<ul>\n<li><code>https?:\\\/\\\/<\/code>: <code>http:\/\/<\/code> veya <code>https:\/\/<\/code> ile ba\u015flar. <code>?<\/code>, <code>s<\/code> harfinin iste\u011fe ba\u011fl\u0131 oldu\u011funu belirtir. <code>\\\/<\/code>, e\u011fik \u00e7izgiyi ka\u00e7ar.<\/li>\n<li><code>(?:www\\.|(?!www))<\/code>: &#8220;www.&#8221; ile ba\u015flar veya &#8220;www.&#8221; ile ba\u015flamayan bir durumdur (bu k\u0131s\u0131m daha karma\u015f\u0131k URL yap\u0131lar\u0131n\u0131 yakalamak i\u00e7in kullan\u0131l\u0131r).<\/li>\n<li><code>[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}<\/code>: Alan ad\u0131 ve uzant\u0131 k\u0131sm\u0131n\u0131 tan\u0131mlar. Harf, rakam ve tirelerden olu\u015fabilir. <code>\\.<\/code> nokta ile ayr\u0131l\u0131r ve <code>[^\\s]{2,}<\/code> ise bo\u015fluk olmayan en az iki karakterlik bir uzant\u0131 (\u00f6rne\u011fin, .com, .net).<\/li>\n<li><code>|<\/code>: VEYA operat\u00f6r\u00fc. Farkl\u0131 URL ba\u015flang\u0131\u00e7lar\u0131n\u0131 (\u00f6rne\u011fin, sadece www ile ba\u015flayanlar) veya farkl\u0131 yap\u0131lar\u0131 yakalamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>Bu ifade, yayg\u0131n URL formatlar\u0131n\u0131 yakalayabilir. Ancak, t\u00fcm olas\u0131 URL varyasyonlar\u0131n\u0131 (IP adresleri, port numaralar\u0131, sorgu parametreleri vb.) kapsamak i\u00e7in Regex daha da karma\u015f\u0131k hale gelebilir.<\/p>\n<h3>Senaryo 3: Belirli Bir Metni De\u011fi\u015ftirme (Replace)<\/h3>\n<p>Regex sadece arama yapmakla kalmaz, ayn\u0131 zamanda bulunan kal\u0131plar\u0131 de\u011fi\u015ftirmek i\u00e7in de kullan\u0131l\u0131r. \u00d6rne\u011fin, bir metindeki t\u00fcm &#8220;eski_kelime&#8221; ifadelerini &#8220;yeni_kelime&#8221; ile de\u011fi\u015ftirmek isteyebilirsiniz.<\/p>\n<p>Bir programlama dilinde (\u00f6rne\u011fin Python) bu i\u015flem \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<pre><code>\nimport re\n\nmetin = \"Bu eski bir metindir, eski kelimeleri de\u011fi\u015ftirelim.\"\nyeni_metin = re.sub(r\"eski\", \"yeni\", metin)\nprint(yeni_metin)\n# \u00c7\u0131kt\u0131: Bu yeni bir metindir, yeni kelimeleri de\u011fi\u015ftirelim.\n    <\/code><\/pre>\n<p>Burada <code>re.sub()<\/code> fonksiyonu kullan\u0131l\u0131r. \u0130lk arg\u00fcman aranan Regex ifadesi (<code>r\"eski\"<\/code>), ikinci arg\u00fcman yerine konulacak metin (<code>\"yeni\"<\/code>) ve \u00fc\u00e7\u00fcnc\u00fc arg\u00fcman ise \u00fczerinde i\u015flem yap\u0131lacak metindir.<\/p>\n<p>Daha karma\u015f\u0131k bir \u00f6rnek olarak, bir metindeki t\u00fcm telefon numaralar\u0131n\u0131 (\u00f6rne\u011fin, 5XX-XXX-XXXX format\u0131ndaki) &#8220;TELEFON NUMARASI G\u0130ZLENM\u0130\u015eT\u0130R&#8221; ile de\u011fi\u015ftirelim:<\/p>\n<pre><code>\nimport re\n\nmetin = \"Bana ula\u015fabilirsiniz: 555-123-4567 veya 532-987-6543.\"\nyeni_metin = re.sub(r\"5\\d{2}-\\d{3}-\\d{4}\", \"TELEFON NUMARASI G\u0130ZLENM\u0130\u015eT\u0130R\", metin)\nprint(yeni_metin)\n# \u00c7\u0131kt\u0131: Bana ula\u015fabilirsiniz: TELEFON NUMARASI G\u0130ZLENM\u0130\u015eT\u0130R veya TELEFON NUMARASI G\u0130ZLENM\u0130\u015eT\u0130R.\n    <\/code><\/pre>\n<p>Burada <code>5\\d{2}-\\d{3}-\\d{4}<\/code> ifadesi, &#8220;5&#8221; ile ba\u015flay\u0131p, ard\u0131ndan iki rakam, bir tire, \u00fc\u00e7 rakam, bir tire ve son olarak d\u00f6rt rakamdan olu\u015fan kal\u0131b\u0131 arar.<\/p>\n<h2>\u0130leri D\u00fczey Konular ve \u0130pu\u00e7lar\u0131<\/h2>\n<p>Temel Regex kavramlar\u0131n\u0131 ve baz\u0131 pratik uygulamalar\u0131 \u00f6\u011frendik. Ancak Regex d\u00fcnyas\u0131 \u00e7ok daha derin ve g\u00fc\u00e7l\u00fc \u00f6zelliklere sahip. Bu b\u00f6l\u00fcmde, daha ileri d\u00fczey konulara de\u011finecek ve Regex kullan\u0131m\u0131n\u0131z\u0131 daha da optimize etmenize yard\u0131mc\u0131 olacak ipu\u00e7lar\u0131 payla\u015faca\u011f\u0131z. Bu bilgiler, \u00f6zellikle karma\u015f\u0131k metin i\u015fleme g\u00f6revleriyle u\u011fra\u015fanlar i\u00e7in faydal\u0131 olacakt\u0131r.<\/p>\n<h3>Gruplama ve Yakalama (Grouping and Capturing)<\/h3>\n<p>Regex&#8217;te parantezler (<code>(...)<\/code>) sadece bir grup olu\u015fturmakla kalmaz, ayn\u0131 zamanda bu grubun i\u00e7erdi\u011fi metni &#8220;yakalar&#8221; (capture). Bu yakalanan gruplar, daha sonra de\u011fi\u015ftirme i\u015flemlerinde veya bulunan verinin belirli k\u0131s\u0131mlar\u0131n\u0131 ay\u0131klamak i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, bir tarihteki g\u00fcn, ay ve y\u0131l bilgilerini ayr\u0131 ayr\u0131 yakalamak isteyebilirsiniz.<\/p>\n<p><code>(\\d{2})-(\\d{2})-(\\d{4})<\/code> ifadesi, &#8220;g\u00fcn-ay-y\u0131l&#8221; format\u0131ndaki bir tarihi ele alal\u0131m. Bu ifade \u00fc\u00e7 grup yakalar:<\/p>\n<ol>\n<li>\u0130lk grup: G\u00fcn (<code>\\d{2}<\/code>)<\/li>\n<li>\u0130kinci grup: Ay (<code>\\d{2}<\/code>)<\/li>\n<li>\u00dc\u00e7\u00fcnc\u00fc grup: Y\u0131l (<code>\\d{4}<\/code>)<\/li>\n<\/ol>\n<p>Bu yakalanan gruplar\u0131 kullanarak, tarihi farkl\u0131 bir formata d\u00f6n\u00fc\u015ft\u00fcrebiliriz. \u00d6rne\u011fin, &#8220;Y\u0131l\/Ay\/G\u00fcn&#8221; format\u0131na:<\/p>\n<pre><code>\nimport re\n\nmetin = \"Bug\u00fcn\u00fcn tarihi: 25-12-2023\"\n# Gruplar\u0131 yakala ve yeni formata d\u00f6n\u00fc\u015ft\u00fcr\nyeni_metin = re.sub(r\"(\\d{2})-(\\d{2})-(\\d{4})\", r\"\\3\/\\2\/\\1\", metin)\nprint(yeni_metin)\n# \u00c7\u0131kt\u0131: Bug\u00fcn\u00fcn tarihi: 2023\/12\/25\n    <\/code><\/pre>\n<p>Burada <code>\\3<\/code> \u00fc\u00e7\u00fcnc\u00fc yakalanan grubu (y\u0131l), <code>\\2<\/code> ikinciyi (ay) ve <code>\\1<\/code> ilkini (g\u00fcn) temsil eder.<\/p>\n<h3>Alternatifler (Alternation)<\/h3>\n<p>Dikey \u00e7izgi (<code>|<\/code>) operat\u00f6r\u00fc, birden fazla olas\u0131 kal\u0131ptan biriyle e\u015fle\u015fmek i\u00e7in kullan\u0131l\u0131r. Bu, farkl\u0131 kelime veya ifadelerden birini aramak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>\u00d6rne\u011fin, hem &#8220;elma&#8221; hem de &#8220;armut&#8221; kelimesini aramak i\u00e7in <code>elma|armut<\/code> ifadesini kullanabilirsiniz. Bu, <code>(elma|armut)<\/code> \u015feklinde gruplanabilir.<\/p>\n<h3>Geriye D\u00f6n\u00fck Referanslar (Backreferences)<\/h3>\n<p>Geriye d\u00f6n\u00fck referanslar, daha \u00f6nce yakalanm\u0131\u015f bir grubun tekrar kullan\u0131lmas\u0131na olanak tan\u0131r. Bu, belirli bir kal\u0131b\u0131n tekrarlanan bir versiyonunu aramak veya metin i\u00e7inde belirli bir yap\u0131y\u0131 do\u011frulamak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>\u00d6rne\u011fin, ayn\u0131 kelimenin ard arda iki kez ge\u00e7ti\u011fi durumlar\u0131 bulmak i\u00e7in: <code>(\\w+)\\s+\\1<\/code>. Bu ifade:<\/p>\n<ul>\n<li><code>(\\w+)<\/code>: Bir veya daha fazla kelime karakterini yakalar (ilk grup).<\/li>\n<li><code>\\s+<\/code>: Bir veya daha fazla bo\u015fluk karakteri.<\/li>\n<li><code>\\1<\/code>: \u0130lk yakalanan grubun ayn\u0131s\u0131yla e\u015fle\u015fir.<\/li>\n<\/ul>\n<p>Bu ifade, &#8220;bu bu&#8221; veya &#8220;metin metin&#8221; gibi tekrar eden kelime \u00e7iftlerini bulacakt\u0131r.<\/p>\n<h3>A\u00e7g\u00f6zl\u00fc (Greedy) ve Tembel (Lazy) E\u015fle\u015fmeler<\/h3>\n<p>Varsay\u0131lan olarak, tekrarlay\u0131c\u0131lar (<code>*<\/code>, <code>+<\/code>, <code>?<\/code>, <code>{n,m}<\/code>) &#8220;a\u00e7g\u00f6zl\u00fc&#8221; davran\u0131r. Yani, m\u00fcmk\u00fcn olan en uzun e\u015fle\u015fmeyi bulmaya \u00e7al\u0131\u015f\u0131rlar. \u00d6rne\u011fin, <code>&lt;.*&gt;<\/code> ifadesi, &#8220;<code>&lt;b&gt;kal\u0131n&lt;\/b&gt;<\/code>&#8221; gibi bir metinde, sadece <code>&lt;b&gt;<\/code> ile <code>&lt;\/b&gt;<\/code> aras\u0131ndaki t\u00fcm metni e\u015fle\u015ftirebilir, \u00e7\u00fcnk\u00fc <code>.*<\/code> m\u00fcmk\u00fcn oldu\u011funca \u00e7ok karakteri t\u00fcketir.<\/p>\n<p>E\u011fer en k\u0131sa e\u015fle\u015fmeyi bulmak isterseniz, tekrarlay\u0131c\u0131n\u0131n sonuna bir soru i\u015fareti (<code>?<\/code>) ekleyerek &#8220;tembel&#8221; (lazy) e\u015fle\u015fme yapabilirsiniz. \u00d6rne\u011fin, <code>&lt;.*&gt;<\/code> yerine <code>&lt;.*?&gt;<\/code> kullan\u0131rsan\u0131z, ayn\u0131 metinde sadece <code>&lt;b&gt;<\/code> ile e\u015fle\u015fir. Bu, \u00f6zellikle HTML veya XML gibi etiketli dillerle \u00e7al\u0131\u015f\u0131rken \u00f6nemlidir.<\/p>\n<h3>G\u00f6r\u00fcnmez Gruplar (Non-capturing Groups)<\/h3>\n<p>Bazen bir grubu sadece mant\u0131ksal bir birim olarak kullanmak istersiniz, ancak i\u00e7eri\u011fini yakalamak istemezsiniz. Bu durumda, <code>(?:...)<\/code> yap\u0131s\u0131n\u0131 kullanarak g\u00f6r\u00fcnmez (non-capturing) gruplar olu\u015fturabilirsiniz. Bu, hem performans\u0131 art\u0131rabilir hem de yakalanan grup say\u0131s\u0131n\u0131 azaltarak i\u015fleri daha d\u00fczenli hale getirebilir.<\/p>\n<h2>Vaka Analizi: Bir E-ticaret Sitesinde \u00dcr\u00fcn Verisi Temizleme<\/h2>\n<p>Bir e-ticaret platformu d\u00fc\u015f\u00fcnelim. Bu platformda binlerce \u00fcr\u00fcn listeleniyor ve her \u00fcr\u00fcn\u00fcn ad\u0131, a\u00e7\u0131klamas\u0131, fiyat\u0131, stok durumu gibi \u00e7e\u015fitli bilgileri var. Ancak, farkl\u0131 tedarik\u00e7ilerden gelen veriler bazen tutars\u0131z, eksik veya yanl\u0131\u015f formatta olabiliyor. \u0130\u015fte bu noktada Regex, veri temizleme (data cleaning) s\u00fcrecinde kilit bir rol oynayabilir.<\/p>\n<h3>Problem: \u00dcr\u00fcn A\u00e7\u0131klamalar\u0131ndaki Tutars\u0131zl\u0131klar<\/h3>\n<p>\u00d6rne\u011fin, \u00fcr\u00fcn a\u00e7\u0131klamalar\u0131nda s\u0131k\u00e7a \u015fu t\u00fcr sorunlarla kar\u015f\u0131la\u015f\u0131labilir:<\/p>\n<ul>\n<li>Farkl\u0131 para birimi sembolleri (<code>$<\/code>, <code>\u20ac<\/code>, <code>TL<\/code>, <code>USD<\/code> vb.)<\/li>\n<li>Farkl\u0131 ondal\u0131k ay\u0131r\u0131c\u0131lar (nokta <code>.<\/code> veya virg\u00fcl <code>,<\/code>)<\/li>\n<li>Fiyatlar\u0131n metin i\u00e7inde rastgele yerlerde bulunmas\u0131<\/li>\n<li>\u00d6zel karakterlerin veya istenmeyen metinlerin (\u00f6rne\u011fin, &#8220;indirimli fiyat&#8221;, &#8220;s\u0131n\u0131rl\u0131 stok&#8221;) fiyatla kar\u0131\u015fmas\u0131<\/li>\n<\/ul>\n<h3>\u00c7\u00f6z\u00fcm: Regex ile Veri Standartla\u015ft\u0131rma<\/h3>\n<p>Bu sorunlar\u0131 \u00e7\u00f6zmek i\u00e7in Regex kullan\u0131labilir. \u00d6rne\u011fin, \u00fcr\u00fcn a\u00e7\u0131klamalar\u0131ndan fiyatlar\u0131 \u00e7\u0131karmak ve standart bir formata getirmek i\u00e7in \u015fu ad\u0131mlar izlenebilir:<\/p>\n<ol>\n<li><strong>Fiyatlar\u0131 Yakalama:<\/strong><\/li>\n<p>\u00d6ncelikle, farkl\u0131 para birimi sembolleri ve ondal\u0131k ay\u0131r\u0131c\u0131lar\u0131 i\u00e7eren fiyatlar\u0131 yakalamak i\u00e7in bir Regex ifadesi olu\u015fturulur. \u00d6rne\u011fin, <code>(\\$|\u20ac|TL|USD)?\\s*(\\d+([.,]\\d+)?)\\s*(TL|USD|EUR)?<\/code> gibi bir ifade, fiyat\u0131 ve para birimini yakalayabilir. Burada:<\/p>\n<ul>\n<li><code>(\\$|\u20ac|TL|USD)?<\/code>: \u0130ste\u011fe ba\u011fl\u0131 olarak para birimi sembol\u00fcn\u00fc yakalar.<\/li>\n<li><code>\\s*<\/code>: \u0130ste\u011fe ba\u011fl\u0131 bo\u015fluklar.<\/li>\n<li><code>(\\d+([.,]\\d+)?)<\/code>: Bir veya daha fazla rakam (<code>\\d+<\/code>), ard\u0131ndan iste\u011fe ba\u011fl\u0131 olarak bir nokta veya virg\u00fcl ve ondan sonra bir veya daha fazla rakam (<code>[.,]\\d+<\/code>) gelir. Bu, tam say\u0131lar\u0131 ve ondal\u0131kl\u0131 say\u0131lar\u0131 yakalar.<\/li>\n<li><code>(TL|USD|EUR)?<\/code>: \u0130ste\u011fe ba\u011fl\u0131 olarak para birimi ad\u0131n\u0131 yakalar.<\/li>\n<\/ul>\n<li><strong>Para Birimi ve Ondal\u0131k Ay\u0131r\u0131c\u0131lar\u0131 Standartla\u015ft\u0131rma:<\/strong><\/li>\n<p>Yakalanan fiyat bilgileri \u00fczerinde, <code>re.sub()<\/code> gibi fonksiyonlarla standartla\u015ft\u0131rma yap\u0131l\u0131r. \u00d6rne\u011fin, t\u00fcm para birimi sembolleri kald\u0131r\u0131l\u0131r, ondal\u0131k ay\u0131r\u0131c\u0131 olarak nokta kullan\u0131l\u0131r ve fiyatlar say\u0131sal tipe d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr.<\/p>\n<pre><code>\nimport re\n\naciklama = \"Bu harika \u00fcr\u00fcn sadece $1,250.50 TL! Stokta son 5 adet.\"\n\n# Fiyat\u0131 ve para birimini yakala\neslesme = re.search(r\"(\\$|\u20ac|TL|USD)?\\s*(\\d+([.,]\\d+)?)\\s*(TL|USD|EUR)?\", aciklama)\n\nif eslesme:\n    para_birimi_sembol = eslesme.group(1)\n    fiyat_str = eslesme.group(2)\n    para_birimi_ad = eslesme.group(4)\n\n    # Ondal\u0131k ay\u0131r\u0131c\u0131y\u0131 nokta yap\n    if ',' in fiyat_str:\n        fiyat_str = fiyat_str.replace(',', '.')\n    # Binlik ay\u0131r\u0131c\u0131lar\u0131 kald\u0131r (varsa)\n    fiyat_str = fiyat_str.replace('.', '').replace(',', '.') # Bu k\u0131s\u0131m dikkatli kullan\u0131lmal\u0131, nokta hem binlik hem ondal\u0131k olabiliyor. Daha g\u00fcvenli y\u00f6ntemler gerekebilir.\n    # Daha sa\u011flam bir yakla\u015f\u0131m:\n    temiz_fiyat_str = re.sub(r'[^\\d.,]', '', eslesme.group(0)) # Sadece rakam, nokta ve virg\u00fcl\u00fc tut\n    if ',' in temiz_fiyat_str and '.' in temiz_fiyat_str:\n        # E\u011fer hem nokta hem virg\u00fcl varsa, hangisinin ondal\u0131k oldu\u011funu belirlemek i\u00e7in daha karma\u015f\u0131k mant\u0131k gerekebilir.\n        # Basit bir senaryoda, sonuncusu ondal\u0131k olabilir.\n        if temiz_fiyat_str.rfind(',') > temiz_fiyat_str.rfind('.'):\n            fiyat_str = temiz_fiyat_str.replace('.', '').replace(',', '.')\n        else:\n            fiyat_str = temiz_fiyat_str.replace(',', '')\n    elif ',' in temiz_fiyat_str:\n        fiyat_str = temiz_fiyat_str.replace(',', '.')\n    else:\n        fiyat_str = temiz_fiyat_str.replace(',', '') # Sadece binlik ay\u0131r\u0131c\u0131lar\u0131 kald\u0131r\n\n    try:\n        fiyat = float(fiyat_str)\n        print(f\"Yakalanan Fiyat: {fiyat}\") # \u00c7\u0131kt\u0131: Yakalanan Fiyat: 1250.5\n    except ValueError:\n        print(\"Fiyat d\u00f6n\u00fc\u015ft\u00fcrmede hata olu\u015ftu.\")\nelse:\n    print(\"Fiyat bulunamad\u0131.\")\n        <\/code><\/pre>\n<p>Bu \u00f6rnek, Regex&#8217;in ham veriyi i\u015flenebilir ve standart hale getirme g\u00fcc\u00fcn\u00fc g\u00f6stermektedir. Bu t\u00fcr temizleme i\u015flemleri, veri analizi, raporlama ve makine \u00f6\u011frenmesi modelleri i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h2>Regex Hatalar\u0131ndan Ka\u00e7\u0131nma ve En \u0130yi Uygulamalar<\/h2>\n<p>Regex&#8217;in g\u00fcc\u00fc ayn\u0131 zamanda karma\u015f\u0131kl\u0131\u011f\u0131ndan da gelir. Etkili Regex ifadeleri yazmak pratik gerektirir ve yayg\u0131n hatalardan ka\u00e7\u0131nmak \u00f6nemlidir. Bu b\u00f6l\u00fcmde, Regex kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 tuzaklar\u0131 ve bu tuzaklardan ka\u00e7\u0131nmak i\u00e7in en iyi uygulamalar\u0131 ele alaca\u011f\u0131z.<\/p>\n<ul>\n<li><strong>A\u015f\u0131r\u0131 Karma\u015f\u0131k \u0130fadelerden Ka\u00e7\u0131n\u0131n:<\/strong> \u00c7ok uzun ve anla\u015f\u0131lmas\u0131 zor Regex ifadeleri yazmak yerine, problemi daha k\u00fc\u00e7\u00fck par\u00e7alara ay\u0131rmay\u0131 d\u00fc\u015f\u00fcn\u00fcn. Gerekirse, birden fazla Regex i\u015flemi veya kod mant\u0131\u011f\u0131 kullanarak daha okunabilir bir \u00e7\u00f6z\u00fcm elde edebilirsiniz.<\/li>\n<li><strong>A\u00e7g\u00f6zl\u00fc E\u015fle\u015fmelerin Fark\u0131nda Olun:<\/strong> Yukar\u0131da bahsedildi\u011fi gibi, varsay\u0131lan a\u00e7g\u00f6zl\u00fc davran\u0131\u015f, beklenmedik sonu\u00e7lara yol a\u00e7abilir. \u00d6zellikle HTML\/XML gibi yap\u0131land\u0131r\u0131lm\u0131\u015f metinlerde, tembel e\u015fle\u015fmeler (<code>.*?<\/code>) kullanmay\u0131 unutmay\u0131n.<\/li>\n<li><strong>Test Edin, Test Edin, Test Edin:<\/strong> Regex ifadelerinizi farkl\u0131 senaryolarla kapsaml\u0131 bir \u015fekilde test edin. \u00c7evrimi\u00e7i Regex test ara\u00e7lar\u0131 (\u00f6rne\u011fin, Regex101, RegExr) bu konuda size \u00e7ok yard\u0131mc\u0131 olacakt\u0131r. Bu ara\u00e7lar, ifadenizin hangi metinlerle e\u015fle\u015fti\u011fini g\u00f6rsel olarak g\u00f6sterir ve hatalar\u0131 bulmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>\u00d6zel Karakterleri Ka\u00e7\u0131r\u0131n (Escape):<\/strong> E\u011fer metin i\u00e7inde \u00f6zel anlam\u0131 olan bir karakteri (<code>.<\/code>, <code>*<\/code>, <code>+<\/code>, <code>?<\/code>, <code>^<\/code>, <code>$<\/code>, <code>(<\/code>, <code>)<\/code>, <code>[<\/code>, <code>]<\/code>, <code>{<\/code>, <code>}<\/code>, <code>|<\/code>, <code>\\<\/code>) ar\u0131yorsan\u0131z, onu ters e\u011fik \u00e7izgi (<code>\\<\/code>) ile ka\u00e7\u0131rmay\u0131 unutmay\u0131n. \u00d6rne\u011fin, bir metinde &#8220;www.example.com&#8221; adresini ar\u0131yorsan\u0131z, Regex&#8217;iniz <code>www\\.example\\.com<\/code> olmal\u0131d\u0131r.<\/li>\n<li><strong>Gereksiz Gruplamadan Ka\u00e7\u0131n\u0131n:<\/strong> Sadece mant\u0131ksal bir gruplama yapman\u0131z gerekiyorsa ve i\u00e7eri\u011fi yakalamak istemiyorsan\u0131z, g\u00f6r\u00fcnmez gruplar\u0131 (<code>(?:...)<\/code>) kullan\u0131n. Bu, performans\u0131 art\u0131r\u0131r ve yakalanan grup say\u0131s\u0131n\u0131 azalt\u0131r.<\/li>\n<li><strong>Belirli Olun, Genel Olmay\u0131n:<\/strong> \u0130htiyac\u0131n\u0131z olmayan karakterleri e\u015fle\u015ftirmekten ka\u00e7\u0131n\u0131n. \u00d6rne\u011fin, sadece rakamlar\u0131 ar\u0131yorsan\u0131z <code>\\d<\/code> kullan\u0131n, her \u015feyi e\u015fle\u015ftiren <code>.<\/code> kullanmay\u0131n. Daha spesifik Regex ifadeleri, daha do\u011fru sonu\u00e7lar verir ve yanl\u0131\u015f pozitifleri (false positives) azalt\u0131r.<\/li>\n<li><strong>D\u00fczenli \u0130fadeleri Yorumlay\u0131n:<\/strong> Karma\u015f\u0131k Regex ifadeleri yazarken, ifadelerin her b\u00f6l\u00fcm\u00fcn\u00fcn ne i\u015fe yarad\u0131\u011f\u0131n\u0131 a\u00e7\u0131klayan yorumlar eklemek, hem sizin hem de ba\u015fkalar\u0131n\u0131n gelecekte bu ifadeyi anlamas\u0131na yard\u0131mc\u0131 olur. Bir\u00e7ok Regex motoru ve ara\u00e7, yorum sat\u0131rlar\u0131n\u0131 destekler (genellikle <code>(?#...)<\/code> veya <code>#<\/code> ile kullan\u0131lan modlar arac\u0131l\u0131\u011f\u0131yla).<\/li>\n<li><strong>Karakter S\u0131n\u0131flar\u0131n\u0131 Etkin Kullan\u0131n:<\/strong> <code>[a-z]<\/code>, <code>[0-9]<\/code> gibi karakter s\u0131n\u0131flar\u0131, belirli bir k\u00fcmedeki karakterleri temsil etmek i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr.<\/li>\n<li><strong>Dize Ba\u015flang\u0131c\u0131 ve Biti\u015fini Kullan\u0131n:<\/strong> Bir kal\u0131b\u0131n dizenin tam olarak ba\u015f\u0131nda veya sonunda olmas\u0131n\u0131 istiyorsan\u0131z, <code>^<\/code> ve <code>$<\/code> i\u015faretleyicilerini kullan\u0131n. Bu, gereksiz e\u015fle\u015fmeleri \u00f6nler.<\/li>\n<\/ul>\n<p>Bu ipu\u00e7lar\u0131 ve en iyi uygulamalar, Regex kullan\u0131m\u0131n\u0131z\u0131 daha g\u00fcvenilir, verimli ve anla\u015f\u0131l\u0131r hale getirecektir. Unutmay\u0131n, Regex \u00f6\u011frenmek bir maratondur, sprint de\u011fil. Sab\u0131rla pratik yaparak bu g\u00fc\u00e7l\u00fc arac\u0131 ustaca kullanabilirsiniz.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Regular Expressions (Regex), metin i\u015fleme d\u00fcnyas\u0131nda adeta bir s\u00fcper kahraman gibidir. Belirli kal\u0131plar\u0131 bulma, do\u011frulama, \u00e7\u0131karma ve de\u011fi\u015ftirme yetenekleriyle, geli\u015ftiricilerden veri analistlerine kadar bir\u00e7ok profesyonelin hayat\u0131n\u0131 kolayla\u015ft\u0131ran vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. Bu makalede, Regex&#8217;in temel yap\u0131 ta\u015flar\u0131ndan ba\u015flayarak, ad\u0131m ad\u0131m daha karma\u015f\u0131k kal\u0131plar olu\u015fturmay\u0131 ve bunlar\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131m\u0131z\u0131 \u00f6\u011frendik. E-posta do\u011frulamadan URL \u00e7\u0131karmaya, veri temizlemeden metin de\u011fi\u015ftirmeye kadar bir\u00e7ok pratik \u00f6rne\u011fi inceledik.<\/p>\n<p>Ayr\u0131ca, ileri d\u00fczey konulara de\u011finerek gruplama, alternatifler, geriye d\u00f6n\u00fck referanslar ve a\u00e7g\u00f6zl\u00fc\/tembel e\u015fle\u015fmeler gibi kavramlar\u0131 anlatt\u0131k. En \u00f6nemlisi, Regex yazarken s\u0131k yap\u0131lan hatalardan ka\u00e7\u0131nmak ve daha iyi, daha okunabilir ve daha g\u00fcvenilir ifadeler olu\u015fturmak i\u00e7in en iyi uygulamalar\u0131 payla\u015ft\u0131k. Unutmay\u0131n ki Regex&#8217;in g\u00fcc\u00fc, onu ne kadar iyi anlad\u0131\u011f\u0131n\u0131za ve pratik yapt\u0131\u011f\u0131n\u0131za ba\u011fl\u0131d\u0131r. \u00c7evrimi\u00e7i ara\u00e7larla denemeler yapmak, farkl\u0131 senaryolar i\u00e7in Regex ifadeleri yazmak ve mevcut ifadeleri incelemek, bu beceriyi geli\u015ftirmenin en etkili yollar\u0131d\u0131r.<\/p>\n<p>Regex, ilk ba\u015fta g\u00f6z korkutucu g\u00f6r\u00fcnebilir, ancak temel prensipleri kavrad\u0131ktan ve bol bol pratik yapt\u0131ktan sonra, metinle ilgili hemen her t\u00fcrl\u00fc g\u00f6revi kolayl\u0131kla yerine getirebileceksiniz. Bu makalenin, Regex yolculu\u011funuzda sa\u011flam bir temel olu\u015fturdu\u011funa inan\u0131yoruz. Art\u0131k metin avc\u0131l\u0131\u011f\u0131na haz\u0131rs\u0131n\u0131z!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n            <strong>Regex \u00f6\u011frenmek zor mu?<\/strong><\/p>\n<p>Regex&#8217;in ba\u015flang\u0131\u00e7ta \u00f6\u011frenme e\u011frisi biraz dik olabilir, \u00e7\u00fcnk\u00fc kendine \u00f6zg\u00fc bir s\u00f6zdizimi ve mant\u0131\u011f\u0131 vard\u0131r. Ancak temel karakterleri, operat\u00f6rleri ve yap\u0131lar\u0131 anlad\u0131\u011f\u0131n\u0131zda ve bol bol pratik yapt\u0131\u011f\u0131n\u0131zda, olduk\u00e7a kolayla\u015f\u0131r. \u00d6nemli olan sab\u0131rl\u0131 olmak ve ad\u0131m ad\u0131m ilerlemektir.<\/p>\n<\/li>\n<li>\n            <strong>Regex hangi programlama dillerinde kullan\u0131l\u0131r?<\/strong><\/p>\n<p>Regex, neredeyse t\u00fcm modern programlama dillerinde desteklenir. Python, JavaScript, Java, C#, PHP, Ruby, Perl, Go gibi dillerin yan\u0131 s\u0131ra bir\u00e7ok metin edit\u00f6r\u00fc, komut sat\u0131r\u0131 arac\u0131 (grep, sed) ve veritaban\u0131 sisteminde Regex kullan\u0131labilir. Bu, \u00f6\u011frendi\u011finiz Regex bilgisinin olduk\u00e7a ta\u015f\u0131nabilir oldu\u011fu anlam\u0131na gelir.<\/p>\n<\/li>\n<li>\n            <strong>Her t\u00fcrl\u00fc metin kal\u0131b\u0131n\u0131 Regex ile bulabilir miyim?<\/strong><\/p>\n<p>Regex, belirli bir ba\u011flam i\u00e7ermeyen metin kal\u0131plar\u0131n\u0131 bulmak i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr. Ancak, \u00e7ok karma\u015f\u0131k veya ba\u011flama duyarl\u0131 kal\u0131plar (\u00f6rne\u011fin, belirli bir programlama dilinin s\u00f6zdizimini tam olarak analiz etmek) i\u00e7in Regex tek ba\u015f\u0131na yeterli olmayabilir ve daha geli\u015fmi\u015f ayr\u0131\u015ft\u0131rma (parsing) teknikleri gerekebilir. Yine de, \u00e7o\u011fu g\u00fcnl\u00fck metin i\u015fleme g\u00f6revi i\u00e7in Regex fazlas\u0131yla yeterlidir.<\/p>\n<\/li>\n<li>\n            <strong>Online Regex test ara\u00e7lar\u0131 neden \u00f6nemlidir?<\/strong><\/p>\n<p>Online Regex test ara\u00e7lar\u0131 (Regex101, RegExr vb.), yazd\u0131\u011f\u0131n\u0131z Regex ifadesinin ger\u00e7ek metin \u00fczerinde nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 an\u0131nda g\u00f6rmenizi sa\u011flar. Bu ara\u00e7lar, e\u015fle\u015fen k\u0131s\u0131mlar\u0131 vurgular, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve farkl\u0131 Regex motorlar\u0131n\u0131n davran\u0131\u015flar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rman\u0131za olanak tan\u0131r. Bu, Regex \u00f6\u011frenme ve hata ay\u0131klama s\u00fcrecini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<\/li>\n<li>\n            <strong>Regex ifadeleri ne kadar uzun olabilir?<\/strong><\/p>\n<p>Regex ifadelerinin uzunlu\u011fu, arad\u0131\u011f\u0131n\u0131z kal\u0131b\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r. Basit ifadeler birka\u00e7 karakterden olu\u015furken, \u00e7ok karma\u015f\u0131k kal\u0131plar y\u00fczlerce karaktere ula\u015fabilir. Ancak, a\u015f\u0131r\u0131 uzun ve okunmas\u0131 zor ifadelerden ka\u00e7\u0131nmak genellikle iyi bir fikirdir. Daha okunabilir ve y\u00f6netilebilir hale getirmek i\u00e7in ifadeyi par\u00e7alara ay\u0131rmak veya yorumlar eklemek faydal\u0131 olabilir.<\/p>\n<\/li>\n<\/ul>\n<p>#Regex #D\u00fczenli\u0130fadeler #Metin\u0130\u015fleme #WebGeli\u015ftirme #Programlama<\/p>\n","protected":false},"excerpt":{"rendered":"Geli\u015ftiriciler, veri bilimciler veya metinlerle yo\u011fun bir \u015fekilde \u00e7al\u0131\u015fan herkes i\u00e7in, b\u00fcy\u00fck veri k\u00fcmelerinde belirli kal\u0131plar\u0131 bulmak, de\u011fi\u015ftirmek veya do\u011frulamak bazen kabusa d\u00f6n\u00fc\u015febilir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-45205","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc\" \/>\n<meta property=\"og:description\" content=\"Geli\u015ftiriciler, veri bilimciler veya metinlerle yo\u011fun bir \u015fekilde \u00e7al\u0131\u015fan herkes i\u00e7in, b\u00fcy\u00fck veri k\u00fcmelerinde belirli kal\u0131plar\u0131 bulmak, de\u011fi\u015ftirmek veya do\u011frulamak bazen kabusa d\u00f6n\u00fc\u015febilir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-15T18:01:50+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc\",\"datePublished\":\"2026-10-15T18:01:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\"},\"wordCount\":3993,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\",\"name\":\"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-10-15T18:01:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/","og_locale":"tr_TR","og_type":"article","og_title":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc","og_description":"Geli\u015ftiriciler, veri bilimciler veya metinlerle yo\u011fun bir \u015fekilde \u00e7al\u0131\u015fan herkes i\u00e7in, b\u00fcy\u00fck veri k\u00fcmelerinde belirli kal\u0131plar\u0131 bulmak, de\u011fi\u015ftirmek veya do\u011frulamak bazen kabusa d\u00f6n\u00fc\u015febilir.","og_url":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-10-15T18:01:50+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc","datePublished":"2026-10-15T18:01:50+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/"},"wordCount":3993,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/","url":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/","name":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-10-15T18:01:50+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/regular-expressions-regex-metin-avciliginin-gucu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Regular Expressions (Regex): Metin Avc\u0131l\u0131\u011f\u0131n\u0131n G\u00fcc\u00fc"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/45205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=45205"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/45205\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=45205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=45205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=45205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}