حسین کعبی: وقتی فیگو را در جام جهانی زدم....
قطعا شما هم فرمهای ثبتنامی که از شما ایمیل میخواهد را دیدهاید یا اینکه مثلا رمز عبور شما فقط باید شامل عدد باشد یا...، چگونه رشته ورودی شما را در کمترین زمان ممکن اعتبارسنجی میکنند؟
و چندین مثال دیگر در این زمینه، حال بیایید بررسی کنیم ببینیم چه راههایی برای حل مسائل وجود دارد.
در مورد مساله اول یک راهحل ساده وجود دارد و آنهم جدا کردن کلمات یک متن و سپس مقایسه آن با رشته مورد نظر، خب به نظر شما این راه به این سرعت به جواب میرسد؟ و آیا اینقدر اطمینان میشود داشت که جواب مورد نظر ما را خروجی بدهد؟ خب با یکسری تغییرات میتوان کاری کرد که این روش یک حالت بهینه پیدا کند، اما در نهایت باز هم سرعت پردازشی بالایی را نیاز دارد، در مورد مساله دوم چگونه؟
خب چک کردن یک مقدار رشتهای که عدد باشد یا نه با بررسی کاراکترهای آن مشخص میشود، اما خب باز راه منطقی برای حل مساله نیست! راه دیگر تبدیل متن به عدد است، اگر موفقیتآمیز بود یعنی ما به جواب رسیدیم در غیر این صورت رشته ورودی معتبر نیست یا چک کردن مقدار یک رشته که یک ایمیل میباشد یا خیر، اینجا شما سختترین کار را دارید چون تمامی کاراکترهایی که شما به عنوان جداکننده میتوانید استفاده کنید میتواند جزئی از ایمیل شما باشد بهطور مثال:
Click.programming@click.jamejameonline.ir
خب شما برای تشخیص اینکه این رشته ورودی یک آدرس معتبر ایمیل است یا خیر دردسر فراوانی را باید متحمل شوید که در نهایت در مورد صحت خروجی شما نیز شبه وجود دارد و اینکه به درستی میتوانید این کار را انجام دهید یا خیر.
خب ما راههای ساده را بررسی کردیم که دیدیم این راههای ساده هم آنچنان قابل اطمینان نیستند، خب پس این مسائل که در دنیای نرمافزار حل شدهاند چگونه حل شدهاند؟
تمام این مسائل با یک راهحل ساده و در عین حال دشوار (دشواری را جلوتر توضیح میدهیم) میتوان حل کرد.
این راه ساده است چون نیاز به دانش برنامهنویسی خاصی ندارد، در عین حال دشوار است. برای اینکه بتوانید به درستی از این راه استفاده کنید و نتیجه دلخواه بگیرید باید دانش تجربی در این زمینه داشته باشید.
بسیار خب، شما هم شاید اسم عبارات با قاعده را شنیده باشید؟ در حال حاضر اکثر زبانهای برنامهنویسی از عبارات با قاعده پشتیبانی میکنند، اما تصور نکنید که عبارات با قاعده مختص یک زبان است یا فقط در هر برنامهنویسی کاربرد دارد، شما در اکثر جاهایی که با جستجو سر و کار دارید از یک عبارات با قاعده استفاده میکنید و شما میتوانید با استفاده از عبارات با قاعده سریعتر جستجوی خود را انجام دهید.
عبارات با قاعده یکسری قواعد ساده دارند که یادگیری آنها زمان زیادی از شما نمیبرد، اما در کنار هم قرار دادن آنها و نوشتن یک عبارت با قاعده که کاربردی باشد و بتواند مشکلات شما را حل کند نیاز به تجربه و زمان دارد، به خاطر همین سعی نکنید با یادگیری قواعد اولیه آن، عبارات با قاعده بزرگ بنویسید، از مثالهای کوچک و ساده شروع کنید و سعی کنید پلههای نردبان را همانطوری که هستند طی کنید، چون ممکن است در وسط راه از یادگیری آن دلزده شوید و برای شما امری غیرممکن و دشوار به نظر برسد.
همانطور که گفتیم عبارات با قاعده در اکثر زبانهای برنامهنویسی وجود دارد و همه از یکسری قواعد ثابت پیروی میکنند، اما در بعضی از زبانها بعضی قواعد اضافه وجود دارند که آن هم بستگی به شرایط دارد، به طور مثال شما میخواهید خط جدید را در عبارات با قاعده خود مدیریت کنید، خط جدید در سیستم ویندوز و لینوکس متفاوت میباشد یا موردی از این دست پس هنگام استفاده از عبارات با قاعده به زبان برنامهنویسی و همچنین محیطی که میخواهید با آن برنامه بنویسید دقت داشته باشید، البته خیلی هم نگران نباشید این موارد استثنا آنقدر نیست که شما بخواهید خیلی روی آن تمرکز کنید.
بسیار خب، حالا که یک آشنایی اولی با عبارات با قاعده به دست آوردیم. نوبت به بررسی قواعد آن میرسد. در شماره بعدی در مورد قواعد آن توضیح خواهید داد. بد نیست نگاهی به سایت زیر بیندازید.
http://www.regular-expressions.info/
امیر بهاالدین سبط الشیخ
حسین کعبی: وقتی فیگو را در جام جهانی زدم....