C# Regex Çift Tırnak
-
c# ta bir cümlem var şöyle ki;
--- merhaba ben kubilay "nasılsın mürid" dedim
regex patterni nasıl oluşturmalıyım ki bu cümleyi boşluklara göre ayırsın fakat tırnak içindekilere karışmasın
-
onu bende c# de çözemedm sıkıldım j#nete geçtim
-
du bakalım belki çözen vardır :)
-
http://stackoverflow.com/questions/554013/regular-expression-to-split-on-spaces-unless-in-quotes
kolay gelsin :) Bu arada nasil buldum dersen, google da soyle arattim
"C# regex without splitting quotes"
edit:
http://stackoverflow.com/questions/366202/regex-for-splitting-a-string-using-space-when-not-surrounded-by-single-or-double
buda guzel.
-
string s = null;s = "Deneme 1-2 \"a1\" a2 adsad \"a3\"";Regex sc = new Regex("\".*?\\\"");string l = "";MatchCollection m = sc.Matches(s);int i;for (i = 0; i <= m.Count - 1; i++){l += m[i].Value + " - ";}MessageBox.Show(l);çalışan örnek, az önce kendim denedim sonuç olarak şunu verir "a1" - "a3" -döngüde ne kadar denk gelmişse tek tek bulur anlamışsındır kardeşim. diğer kısmınıda veririm birazdan
-
CHaRMaNDeR bunu yazdı:
-----------------------------
string s = null;s = "Deneme 1-2 \"a1\" a2 adsad \"a3\"";Regex sc = new Regex("\".*?\\\"");string l = "";MatchCollection m = sc.Matches(s);int i;for (i = 0; i <= m.Count - 1; i++){l += m[i].Value + " - ";}MessageBox.Show(l);çalışan örnek, az önce kendim denedim sonuç olarak şunu verir "a1" - "a3" -döngüde ne kadar denk gelmişse tek tek bulur anlamışsındır kardeşim.
-----------------------------
+rep :d -
valla elinize beyninize sağlık çok makbule geçti müridlerr
-
string s = null;
s = "--- merhaba ben kubilay \"nasılsın mürid\" dedim";
Regex sc = new Regex("\".*?\\\"");
MatchCollection m = sc.Matches(s);
int i;
for (i = 0; i <= m.Count - 1; i++)
{
s = s.Replace(m[i].Value, "tmp" + i);
}
string yenisonuc = s;
string[] ayrac;
ayrac = yenisonuc.Split(' ');
for (i = 0; i <= ayrac.Length - 1; i++)
{
for (int j = 0; j <= m.Count - 1; j++)
{
ayrac[i]=ayrac[i].Replace("tmp" + j, m[j].Value);
}
}
string l = "";
for (i = 0; i <= ayrac.Length - 1; i++)
{
l+=ayrac[i]+ (char)13 + (char)10;
}
MessageBox.Show(l);
istediğini tam yapanda bu. ayrac dizisi, sonuç olarak şunu verir:---merhababenkubilay"nasılsın mürid"dedim -
çizik atim :D
