{"id":4654,"date":"2020-04-24T12:54:55","date_gmt":"2020-04-24T09:54:55","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=4654"},"modified":"2020-04-26T15:33:25","modified_gmt":"2020-04-26T12:33:25","slug":"asp-net-c-icin-regex-regular-expressions-notlari-1","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2020\/04\/24\/asp-net-c-icin-regex-regular-expressions-notlari-1\/","title":{"rendered":"ASP.NET C# i\u00e7in Regex  (Regular Expressions) Notlar\u0131 &#8211; 1"},"content":{"rendered":"\n<p><strong>Regular Expressions, <\/strong>yani<strong> &nbsp;d\u00fczenli \u0130fadeler, <\/strong>string bir de\u011fi\u015fkenin ya da bir metnin<strong>, <\/strong>verilen kal\u0131pla e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol etmek i\u00e7in kullan\u0131lan bir modeldir. Ayn\u0131 zamanda, bu ifadeler sayesinde, bir metnin i\u00e7inde, belirli desenlere uyan detayl\u0131 aramalar yapabilir ya da belli kurallara uyan alt metinler elde edilebilir.<\/p>\n\n\n\n<p>Bu makalede \u00f6ncelikle RegularExpressions k\u00fct\u00fcphanesine g\u00f6z at\u0131p, c# da kullan\u0131m\u0131na bakaca\u011f\u0131z. Daha sonra RegularExpressions diline ait \u00f6zel karakterlere ve son olarak da s\u0131k kullan\u0131lan ifade gruplar\u0131na bakaca\u011f\u0131z.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"> <strong>RegularExpression<\/strong> K\u00fct\u00fcphanesi<\/h3>\n\n\n\n<p> C# i\u00e7erisinde Regex kullanabilmek i\u00e7in &nbsp;<strong>System.Text.RegularExpression<\/strong>&nbsp;k\u00fct\u00fcphanesini eklememiz gerekmektedir. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using System.Text.RegularExpressions; <\/code><\/pre>\n\n\n\n<p>Bu k\u00fct\u00fcphanede Regex s\u0131n\u0131f\u0131 i\u00e7inde kullan\u0131labilen pek \u00e7ok faydal\u0131 methot vard\u0131r. \u00f6rnek olarak:<\/p>\n\n\n\n<p>  <strong>Escape  :<\/strong> Verilen string ifadenin i\u00e7ine bulunan \u00f6zel karakterlerin ba\u015f\u0131na &#8220;escape&#8221; yani &#8220;-\\&#8221; karakteri ekler. \u00d6rnek olarak &#8220;\\n&#8221; stringini &#8220;\\\\n&#8221; stringine \u00e7evirir.<\/p>\n\n\n\n<p>  <strong>UnEscape <\/strong> <strong>:<\/strong> Verilen string ifadenin i\u00e7ine bulunan  &#8220;escape -\\&#8221; karakterlerini kald\u0131r\u0131r. Mesela iki string ifadenin k\u0131yaslanmas\u0131 s\u0131ras\u0131nda, \u00f6ncelikle stringde bulunan &#8220;\\&#8221; karakterlerinden sadece escape olarak kullan\u0131lanlar\u0131n\u0131 temizlemek isteyebiliriz. bu gibi durumlarda \u00e7ok faydal\u0131d\u0131r. <\/p>\n\n\n\n<p>  <strong>Equals  :<\/strong> \u0130ki string ifadeyi k\u0131yaslayarak ayn\u0131 olup olmad\u0131\u011f\u0131 bilgisini true\/false olarak d\u00f6ner. \u00d6rnek olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string = \"123abc\";\nSystem.Text.RegularExpressions.Regex.Equals(text1, \"123abc\");\n\nSonu\u00e7: true<\/code><\/pre>\n\n\n\n<p> <strong>IsMatch   :<\/strong>    Bir stringin i\u00e7inde, di\u011fer bir string ya da bir ifadenin bulunup bulunmad\u0131\u011f\u0131 bilgisini  true\/false olarak d\u00f6ner. kullan\u0131lan string ya da regex de\u011ferleri, ba\u015flang\u0131\u00e7 index de\u011feri vs. g\u00f6re 5 farkl\u0131 kullan\u0131m \u015fekli vard\u0131r. \u00d6rnek olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string = \"123abc\";\nSystem.Text.RegularExpressions.Regex.Equals(text1, \"123\");\n\nSonu\u00e7: true<\/code><\/pre>\n\n\n\n<p><strong> Match  :<\/strong>Bir stringin i\u00e7inde, di\u011fer bir stringi, ya da bir ifadeyi bulup, ilk buldu\u011fu de\u011feri &#8220;Match&#8221; s\u0131n\u0131f\u0131 olarak d\u00f6nd\u00fcr\u00fcr.  Match s\u0131n\u0131f\u0131 i\u00e7in <a href=\"https:\/\/docs.microsoft.com\/tr-tr\/dotnet\/api\/system.text.regularexpressions.match?view=netframework-4.8\">t\u0131klay\u0131n\u0131z<\/a>. 6 farkl\u0131 kullan\u0131m tipi vard\u0131r. Bunlar sayesinde istenilen d\u00fczenli ifade ayarlanabilir, veya metnin i\u00e7inde arama yap\u0131lacak ba\u015flang\u0131\u00e7 noktas\u0131 ya da ne kadar uzunlukta arama yap\u0131laca\u011f\u0131 belirlenebilir.  <\/p>\n\n\n\n<p>\u00d6rnek kullan\u0131m\u0131: verilen string de\u011fer i\u00e7inde, tan\u0131mlanan regex ifadesine g\u00f6re arama yap\u0131p buldu\u011fu ilk e\u015fle\u015fmeyi d\u00f6nd\u00fcr\u00fcr.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string input = \"Regular Expressions Kullan\u0131m\u0131\";\n      Regex regex = new Regex(@\"g*r\");\n      Match m = regex.Match(input);\n\nSonuc: m.value=\"gular\"<\/code><\/pre>\n\n\n\n<p>  <strong> Matches  :<\/strong> Bir stringin i\u00e7inde, di\u011fer bir stringi ya da bir ifadeyi bulup, buldu\u011fu t\u00fcm de\u011ferleri &#8220;MatchCollection&#8221; olarak d\u00f6nd\u00fcr\u00fcr. MatchCollection S\u0131n\u0131f\u0131 i\u00e7in <a href=\"https:\/\/docs.microsoft.com\/tr-tr\/dotnet\/api\/system.text.regularexpressions.matchcollection?view=netframework-4.8\">t\u0131klay\u0131n\u0131z<\/a>. 5 farkl\u0131 kullan\u0131m\u0131 vard\u0131r.<\/p>\n\n\n\n<p> \u00d6rnek kullan\u0131m\u0131:  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string input = \"Regular Expressions Kullan\u0131m\u0131\";\n      Regex regex = new Regex(@\"+n\");\n      MatchCollection matches = Regex.Matches(input,regex);\n\nSonuc: matches[0] Index=16, Value=\"on\"\n       matches[1] Index=24, Value=\"an\"<\/code><\/pre>\n\n\n\n<p><strong>  Replace  :<\/strong> Bir stringin i\u00e7inde, di\u011fer bir stringi ya da bir ifadeyi bulup , istenilen bir string ile ya da di\u011fer regex ifade ile de\u011fi\u015ftirir. Kullan\u0131m amac\u0131na g\u00f6re pek \u00e7ok farkl\u0131 de\u011fi\u015fken alan 12 tipi vard\u0131r.<\/p>\n\n\n\n<p>\u00d6rnek olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> string  metin = \"Bu    metnin  i\u00e7inde     \" +     \n                 \"\u00e7ok    fazla   bo\u015fluk   var\";      \n string pattern = \"\\\\s+\";      \n string result = Regex.Replace(metin, pattern, \" \"); \n\n sonu\u00e7  metin = \"Bu metnin i\u00e7inde \u00e7ok fazla bo\u015fluk var\"<\/code><\/pre>\n\n\n\n<p> <strong>   Split   :<\/strong> Bir stringin i\u00e7inde, belirtilen string ya da bir regex ifadeye g\u00f6re par\u00e7alay\u0131p, string bir diziye atar. 6 farkl\u0131 kullan\u0131m \u015fekli vard\u0131r.<\/p>\n\n\n\n<p>\u00d6rnek olarak: tarih bilgisi tutan bir metni, g\u00fcn-ay-y\u0131l olarak par\u00e7alara ay\u0131rma i\u015flemi.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> string tarih= @\"20\/04\/2020\";   \n string pattern = @\"(-)|(\/)\";\n string[] result = Regex.Split(tarih, pattern)\n\n  sonuc result[0]= \"20\";\n        result[1]= \"04\";\n        result[2]= \"2020\";<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>ASP.NET MVC<\/strong> <strong>\u0130\u00e7in Regular Expression Kullan\u0131m\u0131<\/strong><\/h3>\n\n\n\n<p>Mvc i\u00e7erisinde \u00e7ok kolay bir \u015felikde regex ifadeler kullanabiliriz. Bunun ilk y\u00f6ntemi, yukar\u0131daki \u00f6rneklerde de verildi\u011fi gibi, kodlama k\u0131sm\u0131nda, regex k\u00fct\u00fcphanesi eklenerek, string de\u011fi\u015fkenler \u00fczerinden kullan\u0131m\u0131d\u0131r.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">  Nesne i\u00e7inde <strong>Regular Expression Kullan\u0131m\u0131<\/strong> <\/h4>\n\n\n\n<p>Regular expressionun di\u011fer bir kullan\u0131m \u015fekli ise, bir nesne olu\u015fturulurken, i\u00e7inde bulunan de\u011fi\u015fkenin ba\u015f\u0131na, o de\u011fi\u015fkene ait kullan\u0131m kurallar\u0131n\u0131 yazmakt\u0131r. Bu \u015fekilde bir do\u011frulama y\u00f6ntemi elde etmi\u015f oluyoruz.<\/p>\n\n\n\n<p>\u00d6rnek olarak: Kisi s\u0131n\u0131f\u0131nda bulunan isim ve soyisim de\u011fi\u015fkeni i\u00e7in, ge\u00e7erli bir format girildi\u011finden emin olmak i\u00e7in, sadece harflerin kullan\u0131labilece\u011fi bir kural ekliyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Kisi\n{\n    [RegularExpression(@\"^[a-zA-Z]*$\"]\n    public string Isim{ get; set;}\n\n    [RegularExpression(@\"^[a-zA-Z]*$\"]\n    public string SoyIsim{ get; set;}\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong> CSHTML ile, Razor Dosyalar\u0131nda Regular Expression Kullan\u0131m\u0131 <\/strong><\/h4>\n\n\n\n<p>\u00c7o\u011fu zaman, sayfam\u0131zda veri giri\u015fi esnas\u0131nda, girilen verilerin istedi\u011fimiz formata uygunlu\u011funu kontrol etmek isteriz. \u00d6zellikle email giri\u015fi, para formatlar\u0131, telefon numaras\u0131 giri\u015fi gibi i\u015flemlerde, hatan\u0131n hemen yakalanmas\u0131 ve uyar\u0131 verilmesi bizi pek \u00e7ok i\u015f maliyetinden kurtarabilir. Bu gibi durumlarda, cshtml kullanarak, razor dosyalar\u0131nda regular expression ifadeleri kullan\u0131labilir. \u00d6rnek olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@using (Html.BeginForm())\n        {\n            @Html.LabelFor(model =&gt; model.Isim, htmlAttributes: new { @class = \"control-label col-md-2\" })\n            @Html.TextBoxFor(model =&gt; model.Isim, new { @class = \"form-control\", pattern = @\"^[a-zA-Z]*$\"  })\n            @Html.ValidationMessageFor(model =&gt; model.Isim, \"\", new { @class = \"text-danger\" })\n            &lt;input type=\"submit\" value=\"Submit\" \/&gt;\n        }<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Javascript \u0130\u00e7inde R<strong>egular Expression Kullan\u0131m\u0131 <\/strong><\/h4>\n\n\n\n<p>Form i\u00e7inde, \u00f6zel baz\u0131 filtreleme, kontrol ya da veri do\u011frulu\u011fu i\u015flemlerinin kontrol\u00fc i\u00e7in s\u0131k s\u0131k javascript i\u015flemlerine ba\u015f vururuz. Bu i\u015flemler i\u00e7in regex ifadeler de kullan\u0131labilir. \u00d6rnek olarak girilen telefon numaras\u0131n\u0131n istenilen formatta olup olmad\u0131\u011f\u0131n\u0131 kontrol ettirelim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;script&gt;\nvar pattern = \/(?:\\d{3}|\\(\\d{3}\\))([-\\\/\\.])\\d{3}\\1\\d{4}\/;\nfunction testInfo(phoneInput) {\n  var OK = pattern.ismatch(phoneInput.value);\n  if (!OK) {\n    alert(phoneInput.value + ' ge\u00e7erli telefon numaras\u0131 format\u0131nda de\u011fildir'); \n  } \n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p> Bir sonraki <a href=\"http:\/\/www.yazilimmutfagi.com\/index.php\/2020\/04\/26\/asp-net-c-icin-regex-regular-expressions-notlari-2\/\">makalede<\/a>, regular expression ifadeleri inceleyip, kullan\u0131lan \u00f6zel karakterler hakk\u0131nda bilgi verece\u011fiz. <\/p>\n\n\n\n<p>Regular expression kal\u0131plar\u0131 i\u00e7in <a href=\"http:\/\/www.yazilimmutfagi.com\/index.php\/2020\/04\/26\/asp-net-c-icin-regex-regular-expressions-notlari-2\/\">t\u0131klay\u0131n\u0131z<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Regular Expressions, yani &nbsp;d\u00fczenli \u0130fadeler, string bir de\u011fi\u015fkenin ya da bir metnin, verilen kal\u0131pla e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol etmek i\u00e7in kullan\u0131lan bir modeldir. Ayn\u0131 zamanda, bu ifadeler sayesinde, bir [&hellip;]<\/p>\n","protected":false},"author":525,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[413],"tags":[4229,6561,6556,6554,6564,6557,4307,6558,6559,6560,6565,6563,6551,5034,6553,4490,4321,5198,6555],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4654"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/525"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=4654"}],"version-history":[{"count":21,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4654\/revisions"}],"predecessor-version":[{"id":4721,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4654\/revisions\/4721"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=4654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=4654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=4654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}