PDA

View Full Version : اموزش RegularExpressions (الفبای برنامه نویسی)



danial.saeedi
دوشنبه 16 دی 1392, 16:10 عصر
با سلام به برنامه نویسان عزیز!
شاید بسیاری از شما "عبارت با قاعده" را شنیده باشید.که به نظر من الفبای برنامه نویسی می باشد.که باید هر برنامه نویسی ان را بداند.
این چیزی است که همه ی برنامه نویسان را به گریه می اندازد.
/\d\d\s/



پس با ما همراه باشید.....

aftabmahtab1
دوشنبه 16 دی 1392, 16:23 عصر
regular دیگه؟ من توی جاوااسکریپت یاد گرفتم ولی توی پی اچ پی نمیدونم چجوریه ممنون

eshpilen
دوشنبه 16 دی 1392, 18:32 عصر
رگولار اکسپرشن که بنظر من زیاد هم سخت و پیچیده نیست. نمیدونم چرا خیلی ها فکر میکنن سخته!
البته رگولار اکسپرشن های پیچیده هم داریما. ولی معمولی هاش چیز آنچنان پیچیده ای نیستن. صرفا یکسری قواعد داره و یخورده دقت میخواد.
شاید یک علت نفهمیدن رگولار اکسپرشن ها، ضعف در زمینهء زبان انگلیسی باشه.
البته فکر کنم بعضیا هم Escaping اش رو خوب درک نمیکنن. اینم بخاطر ضعف پایه ای و عدم آشنایی قبلی و درک علت و نحوهء Escaping است.
رفرنس یادگیری رگولار اکسپرشن در حد پایه چند صفحه بیشتر نیست که معمولا در خود در رفرنس ها و منوال های زبانهای برنامه نویسی درج شده.

danial.saeedi
دوشنبه 16 دی 1392, 19:49 عصر
با سلام به برنامه نویسان!
وقتی در مورد RegularExpressions جست و جو می کنید با منابع Perl رو به رو می شویدکه در سایت رو به رو منبع خوبی برای مبتدیان است:www.regular-expressions.info.
به وسیله عبارت با قاعده می توان متنی را جایگزین کرد یا طول رشته و.... می توان انجام داد.یا یک ایمیل را اعتبار سنجی کنید.(البته تابع هایی برای اعتبار سنجی ایمیل وجود دارند مثل filter_var)
بیاید از متاکاراکتر ها شروع کنیم.کارکتر های مثل \s\d و... به ان ها متا کارکتر اطلاق می شود.به مثال زیر دقت کنید:
http://bein.ir/wp-content/uploads/2014/01/reqular.png

danial.saeedi
سه شنبه 17 دی 1392, 13:40 عصر
با سلام!
دیگر چیزهایی که باید ان ها را بدانید:
[a-z] - هر کاراکتر بین a تا z
[abc123] - هرکاراکتری بین abc و 123
[a-z124-7] - هر کاراکتری بین a تا z و 1،2 تا 4 و از چهار تا 7
همان طور که گفته شد عبارت ها به حرف کوچک و بزرگ حساس هستند.که بزرگ بودن کاراکتر،کار ان را منفی می کند.(S\ - هر چیزی غیر از فضای خالی)
اینارو هم بدونید بد نیست:
^(هشتک) - اغاز رشته
$ - پایان رشته
البته عبارت های بسیاری وجود دارند که بیشترشان کاربرد خاصی ندارند.
خب ممکنه شما عبارتی را چندبار تکرار کنید:
/\d\d\d\d/
در صورتی که می توانیم در داخل پرانتز تعداد تکرار را بنویسیم:
/\d{4}/

danial.saeedi
سه شنبه 17 دی 1392, 14:00 عصر
ای بابا یک تشکر ندیدم:عصبانی:

danial.saeedi
سه شنبه 17 دی 1392, 14:26 عصر
با سلام در این پست با شمارنده ها اشنا می شویم:
+ - یک بار یا بیشتر
* - هیچ بار یا بیشتر
? - هیچ بار با بیشتر
{n,x} - بین n تا m بار
{y} - ایگرگ بار یا بیشتر(متن به هم ریخت ایگرگ(y) نوشتم)
{x} - بین x بار
خب الان با عبارت با قاعده اشنا شدیم می رسیم که چگونه یک عبارت بنوسیم:(برای نوشتن عبارت باید از / یا # استفاده کرد)
#عبارت با قاعده#
/عبارت با قاعده/
برای اجرای عبارتی که نوشتید باید از preg_match استفاده کنید.(در پست های بعدی بیشتر به ان می پردازیم.)

danial.saeedi
سه شنبه 17 دی 1392, 14:33 عصر
خب همون طور که قول داده بودم باید به تابع preg_match به پردازیم.(در php عبارت هایی پتشیبانی نمی شوند برای اینکه همه عبارت ها پشتیبانی شوند از تابع preg_match_all استفاده می کنید)


<?php
$string="hello,i'm danial";
if(preg_match("/\w+\Wi'm \w/",$string))
{
echo "danial 13 years old!";
}
else
{
echo "danial is not 13 years old!";
}
?>

کاراکتر w\ کلمه ی hello را انتخاب می کند.
hello
کارکتر W\ عبارت " , " را انتخاب می کند.
,
و کاراکتر w\ کلمه ی danial را انتخاب می کند.
danial
موفق باشید!

danial.saeedi
سه شنبه 17 دی 1392, 19:57 عصر
خب حالا می رسیم به اصلاح گرهای عبارت با قاعده
اصلاح گر " i " - عبارت را به کوچکی و بزرکی حرف بی اثر می کند.
اصلاح گر " s " - از فضای خالی چشم پوشی می کند.
اصلاحگر " M " - به وسیله اصلاح گر M می توان ^ و $ را بی اثر کرد(^ اغاز رشته را معلوم می کند و $ پایان رشته را).
اصلاح گر " U " - وقتی با رشته هایی سر و کار دارید که از نوع UTF-8 هستند این اصلاح گر کاربرد دارد.
باز هم اصلاح گر های دیگری نیز وجود دارند که بیشترشان به درد نخورن.
موفق باشید!