PDA

View Full Version : سوال: جستجوی یک رشته در رشته ای دیگر ...البته با شرایط متفاوت



pooya1072
پنج شنبه 08 فروردین 1392, 22:43 عصر
سلام
فرض کنید رشته ای داریم مانند زیر :

"abcdsqr efgh(sqr)efg 655*sqr+876 resqrhhg sqrfdfd sqr uytu"

زیر رشته مورد نظر من sqr است که در رشته اصلی آن را با رنگ قرمز مشخص کردم . سوالم اینه که چطور می تونم فقط محل شروع sqr ی رو برگردونم که دو طرفش یا عملگرهای ریاضی باشه یا علامت پرانتز ( باز یا بسته ) و یا هر دو طرف خالی باشه. با توجه به چیزی که می خوام در رشته بالا فقط 3 گزینه مطابق خواسته منه که اونا رو با علامت سبز مشخص می کنم :

"abcdsqr efgh(sqr)efg 655*sqr+876 resqrhhg sqrfdfd sqr uytu"

فقط محل شروع رو میخوام.
با تشکر

tooraj_azizi_1035
جمعه 09 فروردین 1392, 19:54 عصر
سلام

listBox1.Items
.AddRange(Regex.Matches("abcdsqr efgh(sqr)efg 655*sqr+876 resqrhhg sqrfdfd sqr uytu",
@"\(sqr\)|\ssqr\s|\*sqr\+|\+sql\*").OfType<Match>()
.Select(m => (m.Index + 1).ToString()).ToArray());


کد بالا فقط ضرب و جمع رو اعمال میکنه برای تقسیم و تفریق باید این قاعده رو دنبال کنی:
| یعنی OR : یا رو به موتور RegularExpression می فهمونه.
عبارت پایین یعنی sql قبلش * و بعدش +.
\*sql\+

فکر کنم بتونی بقیوشو بنویسی(منظورم ادامه دادن pattern ای که نوشتم هست).