PDA

View Full Version : در خواست کمک برای نوشتن RegularExpressions



debugger
دوشنبه 24 خرداد 1389, 23:58 عصر
دوستان عزیز من میخوام در یک فایل متنی (txt) رشته ای را جستجو کنم که به صورت زیر امده است (به صورت پراکنده داخل فایل متنی نوشته شده است)



["username"] = "x";


x می تونه عدد یا حرف یا هر چیز دلخواه دیگه باشه که تعداد کاراکترهاش معلوم نیست


میخوام کدی بنویسم که با استفاده از RegularExpressions اون قسمت x را برام پیدا کنه ؟




با تشکر

r00tkit
سه شنبه 25 خرداد 1389, 00:14 صبح
سلام
من متوجه منظور دقیق نشده می شه یه مثال بزنید
ان چیزی که فهمیدم:
["username"] = "3ef";یا
["username"] = "sfg";

debugger
سه شنبه 25 خرداد 1389, 00:29 صبح
ببین دوست عزیز جای x میشه هر چی دلت خواست بنویسی

مثلا بنویسی

yashar
sakjalksja254
!%#$^fas
aksfja52444433454dfgs
hhhhhhasfdla
55555555475

خلاصه بین دو تا "" هر چی ممکنه باشه ما باید اونو پیدا کنیم . اصلا هم نمیدونیم چند تا کاراکتری هست ؟ و اصلا نمی دونیم از چه کاراکتری هایی استفاده شده

فقط اینو میدونم که حروف فارسی نیستند

ممنونم

r00tkit
سه شنبه 25 خرداد 1389, 00:36 صبح
\["sername"\]=\".+?\";


قبل " ها یه \ قرار بده

debugger
سه شنبه 25 خرداد 1389, 00:49 صبح
Regex

urlRegex = newRegex(["sername"]=".+?\";,RegexOptions.IgnoreCase);




قبل " ها یه \ قرار دادم . نشد . هر طوری نوشتم نشد




میشه زحمتشو بکشی . ببینم چطوری میشه ?

من که اینطوری نوشتم




Regex urlRegex = new Regex("([\"username\"])=\".+?\";$",RegexOptions.IgnoreCase);

میلاد قاضی پور
سه شنبه 25 خرداد 1389, 01:10 صبح
فکر کنم باید پرانتز هارو حذف کنی




newRegex("\[\"username\"\]=\".+?\";",

debugger
سه شنبه 25 خرداد 1389, 01:20 صبح
درستش اینطوریه




Regex urlRegex = new Regex("[\"username\"]=\".+?\";",RegexOptions.IgnoreCase);


مشکل اینه که x را بر نمی گردونه

کل خطی که توش عبارت بالا بکار رفته شده را بر میگردونه

میلاد قاضی پور
سه شنبه 25 خرداد 1389, 01:24 صبح
اینطوری میتونی ایکس رو هم دربیاری




Regex r;
r = new Regex("[\"username\"]=\"<X>\";",regexoption.ignorecase);

MatchCollection mc = r.Matches(textbox1.text);
foreach (Match m in mc)
{
listBox2.Items.Add(m.Groups["x"].Value);
}

پیشاپیش معذرت اگه کمکت نکرد. کد رو از یکی از پروژه های قدیمی کپی کردم اساتید محترم میتونن نکات اصلاحیش رو بگن .

debugger
سه شنبه 25 خرداد 1389, 01:38 صبح
اینطوری میتونی ایکس رو هم دربیاری









Regex r;
r = new Regex("[\"username\"]=\"<X>\";",regexoption.ignorecase);


MatchCollection mc = r.Matches(textbox1.text);
foreach (Match m in mc)
{
listBox2.Items.Add(m.Groups["x"].Value);
}




پیشاپیش معذرت اگه کمکت نکرد. کد رو از یکی از پروژه های قدیمی کپی کردم اساتید محترم میتونن نکات اصلاحیش رو بگن .







از کد شما نتونستم خروجی بگیرم

خودم اینطوری نوشتم ولی کل خطی که اون عبارت توش بکار رفته را بر میگردونه




data = str.ReadToEnd();
Regex urlRegex = newRegex("[\"username\"]=\".+?\";", RegexOptions.IgnoreCase);
MatchCollection urlMatches = urlRegex.Matches(data);

foreach (Match urlMatch in urlMatches)
{
listBox1.Items.Add(urlMatch.Value.ToString());
Application.DoEvents();
}

میلاد قاضی پور
سه شنبه 25 خرداد 1389, 01:41 صبح
ببینید من یه زمانی یه برنامه نوشتم که سورس صفحه دوستان سایت فرندفید رو میخوند و لیست دوستان رو در میآورد . هرجا که اسم دوستان بود توی سورس کنارش یه دونه
alt=""
داشت . من با این روش تونستم بالاخره فقط اسم دوستامو از تو سورس در بیارم .



private void button_autoAdd_Click_1(object sender, EventArgs e)
{
Regex r;
r = new Regex(@"alt=\""(?<m>\w*)\""\W+");

MatchCollection mc = r.Matches(richTextBox1.Text);
foreach (Match m in mc)
{
listBox1.Items.Add(m.Groups["m"].Value);
}
}

debugger
سه شنبه 25 خرداد 1389, 01:50 صبح
من فکر می کنم بخاطر استفاده از [] که جواب نمیده چون این دو کاراکتر درRegularExpressions خودشون کاربرد دارد . و برنامه اینو اشتباهی میگیره

وگرنه صورت زیر کاملا درست خواهد بود




Regex urlRegex = new Regex(@"[\"username\"]=\""(?<m>\w*)\""\W+", RegexOptions.IgnoreCase);

میلاد قاضی پور
سه شنبه 25 خرداد 1389, 02:29 صبح
اگه اولش @ بذارید باید بعد از هر کوتیشن یه کوتیشن دیگه هم بذاری یا از تک کوت استفاده کنی.ولی با اینا برطرف نمیشه .

debugger
سه شنبه 25 خرداد 1389, 10:35 صبح
کسی میدونه چطور میشه بوسیله regex کاراکتر ] را جستجو کرد ؟؟؟؟

r00tkit
سه شنبه 25 خرداد 1389, 11:12 صبح
سلام

شرمنده نبودم

عبارت ] در عبارات با قائده یعنی مجموعهی خاص اما اگه قبلش \ رو قرار بدی لیترال حساب می شه

پی نوشت:
من درست می نویسم ولی وقتی توی سایت قرار می دم نمی دونم چرا بهم می خوره و بعضی از کاراکتر ها حذف می شه