تمام سوالات سوالات بدون پاسخ سوال بپرسید

می دانم که کتابخانه boost در ++C قسمتی هم برای کار با عبارات با قاعده (regex) دارد. مثال هایی زیادی هم برای این موضوع پیدا کردم. اما همه پیچیده و شلوغ هستند. من کار ساده ای می خواهم انجام بدم. فقط پیدا کردن match های یک الگو در یک رشته و عوض کردن اون ها با رشته های دیگه. کسی می تونه کمکم کنه؟ ممنون.

1 پاسخ

سلام دوست عزیز همانطور که می دانید regex در boost بسیار به TR1 که در VC++ 2010 پیاده سازی شده است، شبیه است و شما می توانید تا حد زیادی از مثال های موجود برای TR1 هم برای این کار استفاده کنید. در این مورد که فرمودید مثال های زیادی وجود دارد ولی تقریباً همه پیچیده نوشته شده اند تا حدی با شما موافقم. در هر صورت من کد زیر را در برنامه ای برای پیدا کردن متغیرهای محیطی استفاده کردم:

string downloadDir(DEFAULT_DOWNLOAD_FOLDER);
boost::regex e("%.+%");
boost::cmatch results;
boost::regex_search(downloadDir.c_str() , results, e );
cout << "مورد تطبیق یافته:"<<results.str();

البته توجه داشته باشید که این کد تنها مورد اول تطبیق با الگو را پیدا می کند و برای دسترسی به موردهای بعدی باید به این صورت عمل کنید:

string  input = "Data1 Data2 Data3";
boost::regex  re("(?<Group>Data.)");
string::const_iterator  begin = input.begin(), end = input.end();
boost::smatch  results;
while ( regex_search( begin, end, results, re ) ) {
  smatch::value_type  r = results["Group"];
  begin = r.second;
}

البته این قطعه کد دوم را از اینجا پیدا کردم و برای پیدا کردن آخرین تطبیق با الگو در رشته ورودی نوشته شده است. در آنجا توضیح داده شده است که results حاوی نقطه شروع (r.first) و پایان(r.second) الگوی یافت شده می باشد و می توان در مرحله بعدی جستجو، این کار را از r.second شروع کرد. ضمن این که در کد بالا با استفاده از الگوی خاصی که با کلمه Group مشخص شده هر کدام از موارد تطبیق یافته را نامگذاری کرده است.

toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها