Regex (رجکس) یا Regular Expressions که در زبان فارسی آن را با نام عبارات با قاعده میشناسیم، یکی از کاربردیترین دستورات قابل استفاده در زمان برنامه نویسی و یا دریافت گزارشات متفاوت از سرچ کنسول گوگل است.
عبارات با قاعده در اصل یک سری الگوهای متنی هستند که بهوسیله پردازشگرهای عبارات با قاعده تفسیر میشوند و نهایتا یک خروجی را به کاربر ارائه میکنند. Regex کاربردهای بسیار زیادی دارد؛ از یافتن عبارات خاص در متن نوشتهها و رشته کدها گرفته تا بررسی و اعتبارسنجی (Validation) ورودیهای مختلف در زمان پیادهسازی فرمها و …
نکته جالب در رابطه با یادگیری Regex این است که، این ابزار در همه زبانهای برنامه نویسی قابل استفاده است. تنها محدودیت استفاده از Regex، به زبان برنامه نویسی در حال استفاده شما بازمیگردد. در یک زبان ممکن است که دستورات استفاده از Regex متفاوت باشد یا اینکه تمامی دستورات قابل استفاده نباشند. بدنیست اشاره کنم که در این مقاله ما راه حلی جامع هم برای این مشکل تهیه کردهایم که در ادامه میتوانید مشاهده نمایید.
اگر با خواندن این مقدمه مشتاق شدهاید که اطلاعات بیشتری در رابطه عبارات با قاعده (Regex) به دست بیاورید، تا انتهای این نوشته با ما در آقای وب بلاگ همراه باشید.
Regex چیست؟ چه کاربردی دارد؟
به زبان ساده، رجکسها عبارات منظم و نوعی از الگوهای رایج هستند که معمولا از آنها برای جستجوی متن استفاده میشود.
مثلا فرض کنید خودروسازان همگی شروع به رنگ آمیزی حرف اول نام تجاری خود در کنارههای خودروی خود کنند تا شناسایی آنها آسان شود. Dodgeها یک “D”، بنزها یک “B”، تویوتاها یک “T” را طراحی میکنند و میگویند شما در کنار جادهای بایستید و پرچمی در یک دست نگه دارید. وظیفه شما این است که ترافیک را تماشا کنید و هر بار که یک Dodge (“D”) را میبینید، به آن اشاره کنید و پرچم را تکان دهید. بنابراین شما برای مدتی آنجا میایستید و هیچ Dodgeی را نمیبینید و هیچ کاری هم انجام نمیدهید. بعد از گذشت زمانی، یک Dodge با حرف D که در کناره آن نقاشی شده است از جلوی شما عبور میکند. بنابراین شما به آن اشاره میکنید و پرچم خود را تکان میدهید. خوب به شما تبریک میگوییم! این دقیقا کاری است که Regexها انجام میدهند. این کار به همین شکل برای جستجوی رشتههای خاص در متون استفاده میشوند.
کاری که شما انجام دادهاید کار آسانی بوده است. تایید میکنید؟ خوب میتوانید تمام روز آنجا بایستید و به Dodge اشاره کنید. اما مسلما این به نوعی خسته کننده میشود. بنابراین استفاده از رجکسها میتواند سبب کاهش خستگی شما و دسترسی سریعتر به متن و رشته مد نظر شما باشد.
استفاده از رجکس اولین بار در سال 1951 سرچشمه گرفت. زمانی که ریاضیدانی به نام Stephen Cole Kleene، زبانهای منظم را با استفاده از نماد ریاضی خود به نام رویدادهای منظم (Regex) مطرح کرد و از آن پس در علوم کامپیوتری و حیطهای دیگر نیز استفاده شد.
Regex یک زبان یا فریمورک جدا از زبان برنامه نویسی نیست. عبارات باقاعده، یک تکنولوژی و سینتکس (Syntax) ثابتی هستند که در اکثر زبانهای برنامه نویسی مثل جاوا اسکریپت، PHP، سی شارپ، پایتون و … وجود دارد و فارغ از هر زبان، تقریبا در تمام حوزههای برنامه نویسی نقش پررنگی داشته و مورد استفاده قرار میگیرد.
Regex در زمان استخراج اطلاعات از هر متنی کاملاً مفید است. این عبارتها برای جستجو و یافتن مطابقت یک یا چند الگوی جستجوی خاص مورد استفاده قرار میگیرند. بدین ترتیب میتوان توالی خالصی از کاراکترهای ASCII یا یونیکد (Unicode) را با استفاده از عبارات با قاعده پیدا کرد. زمینههای کاربرد Regex از اعتبارسنجی تا تجزیه و جایگزینی رشتهها، ترجمه دادهها به قالبهای دیگر و Web Scraping متفاوت است.
چرا از رجکس استفاده میکنیم؟
استفاده از Regex هم مثل هر سینتکس دیگری مزایا و معایب خود را دارد. اگر فکر میکنید که چرا بهجای فیلترنویسی با زبان مورد استفاده خود باید از رجکس استفاده کنیم، ما دلایل زیر را برای شما عنوان میکنیم.
- دستورات استفاده از Regex ساده است.
- در تمامی زبانهای برنامه نویسی قابل استفاده است.
- در بسیاری از موارد، یک خط فیلترنویسی با رجکس، کار 100 خط کدنویسی را انجام میدهد.
- نیازی به IDE ندارد و حتی پیچیدهترین کدهای Regex هم از طریق وب قابل اجرا هستند.
- میتواند صرفه جویی بسیاری در زمان برنامه نویسها بهوجود آورد.
- به هیچ منابع سخت افزاری زیادی نیاز ندارد و عملا با هر سخت افزاری قابل اجراست.
- و…
عبارات با قاعده در کنار مزایای بسیار زیاد خود، معایب انگشت شماری هم دارند که بدنیست در همین قسمت به آنها اشاره کنیم. در حقیقت باید گفت که Regex تنها دو ایراد اصلی دارد.
اولین ایراد بزرگی که در طی این سالها به سینتکس Regex گرفته میشود، تعدد بالای دستورات آن است. در حقیقت دستورات قابل استفاده در رجکس بسیار زیاد هستند و بهخاطر سپردن آنها کار سختی است. دومین ایراد هم به غیرقابل توسعه بودن این تکنولوژی میپردازد. در حقیقت Regex یک سری دستورات از پیش تعریف شده است، که امکان هیچ نوآوری در آن وجود ندارد. برنامه نویسان تنها با تکیه به خلاقیت خود میتوانند این قوانین را با یکدیگر ترکیب کنند و الگوریتمهایی را به وجود بیاورند که میتواند قابل توجه باشد. اگر از این دو مسئله چشمپوشی کنیم، ایراد دیگری نمیتوان از این تکنولوژی دوست داشتنی و کارآمد گرفت.
دستورات ابتدایی کار با Regex
همانطور که در بخش قبلی اشاره کردیم، تعداد دستورات Regex بسیار زیاد است و درک این دستورات گاها ساده و گاها سخت هستند. از طرفی امکان ترکیب دستورات سینتکس رجکس، موجب میشود که فهمیدن برخی عبارات با قاعده در بعضی مواقع دشوار باشد. در ادامه به معرفی دستورات ابتدایی Regex میپردازیم و با ارائه مثال، بررسی میکنیم که هر دستور چه کاربردی دارد.
Limiters (مهارها)
دستورات مهار، رشتهها را بر اساس عبارت یا کاراکتر ابتدایی و انتهاییشان فیلتر میکنند. برای درک بهتر به مثالهای زیر توجه کنید.
دستور (سینتکس) | عملکرد (خروجی) |
hi^ | هر رشتهای که با عبارت hi آغاز شود را در خروجی نشان میدهد. |
$bye | هر رشتهای که با عبارت bye خاتمه یابد را در خروجی نشان میدهد. |
$hi bye^ | هر رشتهای که با عبارت hi آغاز و با عبارت bye خاتمه یابد را در خروجی نشان میدهد. |
netafraz | هر رشتهای که شامل عبارت netafraz باشد را در خروجی نشان میدهد. |
Quantifiers (سورها)
سورها عملکردی شبیه به دستورات مهار دارند، با این تفاوت که عبارت فیلترشده محدود به تعداد کاراکتر خاصی نبوده و میتواند شامل یک الگوی کاراکتری باشد. برای درک بهتر به مثالهای زیر توجه کنید.
دستور (سینتکس) | عملکرد (خروجی) |
*abc | هر رشتهای را که در ابتدایش کاراکترهای ab و در ادامه هیچ، یا چند کاراکتر C داشته باشد را در خروجی نشان میدهد. |
+abc | هر رشتهای را که در ابتدایش کاراکترهای ab و در ادامه یک، یا چند کاراکتر C داشته باشد را در خروجی نشان میدهد. |
?abc | هر رشتهای را که در ابتدایش کاراکترهای ab و در ادامه هیچ، یا یک کاراکتر C داشته باشد را در خروجی نشان میدهد. |
{2}abc | هر رشتهای را که در ابتدایش کاراکترهای ab و در ادامه تنها 2 کاراکتر C داشته باشد را در خروجی نشان میدهد. |
{2,5}abc | هر رشتهای را که در ابتدایش کاراکترهای ab و در ادامه بین 2 تا 5 کاراکتر C داشته باشد را در خروجی نشان میدهد. |
دستوراتی مثل سورها، مهارها و همچنین عملگرها از جمله دستورات ابتدایی کار با Regex هستند که در این نوشته سعی کردیم تا به بررسی آنها بپردازیم. توجه داشته باشید که موارد مذکور، در اکثر خطوط کدهای رجکس دیده میشوند و شناخت آنها به شما کمک میکنند تا بتوانید از کاربرد اکثر کدهای رجکس مطلع شوید. سینتکس تکنولوژی Regex بسیار فراتر از موارد اشاره شده در این نوشته است و شامل موارد بسیاری مثل Flag ها و… میشود.
توجه داشته باشید که آقای وب بلاگ، یک محیط آکادمیک برای یادگیری برنامه نویسی نیست؛ از همین رو ما در این نوشته تنها به بررسی اصول پایه پرداختیم. بد نیست اشاره کنم که دنیای Regex بسیار گستردهتر از محتوای این نوشته است و برای تسلط به سینتکس این تکنولوژی باید دورهای جامع و اصولی را طی کنید.
رایجترین کدهای Regex آماده برای استفاده روزمره
گسترده بودنِ سینتکس تکنولوژی رجکس و سختی نوشتن کدهای Regex برای برخی برنامه نویسان، موجب شده که سایتهای مختلف و برنامه نویسان سراسر دنیا، اقدام به نوشتن کدهای Regex پرکاربرد نمایند و این رشته کدها را در اختیار عموم قرار دهند.
تقریبا میتوان گفت که بیش از 90 درصد کدهای رایج Regex مورداستفاده برنامه نویسان، امروزه در سایتهایی مثل Stackoverflow یا github و… در دسترس است. تنها کافیست که عملکرد موردنیاز خود را به همراه زبان برنامه نویسی که مشغول به کار با آن هستید را سرچ کنید و در انتهای آن عبارت “Regex” را قرار دهید. برای مثال، اگر بخواهیم که عملکرد اعتبارسنجی (سنجش امنیت) رمزعبور را در زبان برنامه نویسی PHP بااستفاده از رجکس پیادهسازی کنیم، کافیست عبارت زیر را در گوگل سرچ کنیم.
password strength check in php with regex
با این کار، رشته کد موردنظر، برای ما به نمایش در میآید و میتوانیم از آن در پروژه خود استفاده کنیم.
اعتبارسنجی رمزعبور
تقریبا میتوان گفت که تمامی سایتها امکان ثبت نام و استفاده از خدمات بیشتر را برای کاربران خود فراهم میکنند. برای ثبت نام نیاز به یک فرم هست و هر فرم ثبت نامی حداقل 2 بخش اصلی دارد. ایمیل و رمز عبور. در ادامه میخواهیم ببینیم که نحوه نوشتن کدهای اعتبارسنجی این دو بخش به چه شکل است.
برای مثال، میخواهیم که رمزعبور واردشده توسط کاربران دارای شرایط زیر باشد:
- از کاراکترهای بزرگ و کوچک در آن استفاده شده باشد.
- از اعداد در آن استفاده شده باشد.
- از کاراکترهای ویژه (!@#$&*) در آن استفاده شده باشد.
- حداقل شامل 8 کاراکتر باشد.
رجکس میتواند این اعتبارسنجی را برای ما انجام دهد. رشته کد Regex برای این کار، بهشرح زیر است:
^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
شاید در نگاه اول، رشته کد بالا برای شما کمی عجیب باشد، اما با حداقل 3 روز کار کردن با سینتکس رجکس، بهراحتی میتوانید متوجه معنای این خط کد شوید. با این وجود، همانطور که اشاره کردیم، رشته کدهای رایج Regex، در اینترنت در دسترس شما هستند و نیازی به نوشتن تمامی این کدها نیست.
اعتبارسنجی ایمیل
نوشتن رشته کد اعتبارسنجی ایمیل با استفاده از تکنولوژی Regex، بسیار سادهتر از رشته کد مربوط به اعتبارسنجی رمزعبور است. در حقیقت بخش اصلی این اعتبارسنجی به این نکته بازمیگردد که در متن واردشده توسط کاربر، کاراکتر “@” وجود داشته باشد.
رجکس میتواند این اعتبارسنجی را برای ما انجام دهد. رشته کد Regex برای این کار، بهشرح زیر است:
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
همانطور که دیدید، کلیه فرآیندهای اعتبارسنجی فرم ثبت نام (Sign in) یک سایت، از طریق کدهای رجکس قابل پیادهسازی است.
بد نیست اشاره کنیم که اعتبار سنجی تنها یکی از قابلیتهای این تکنولوژی است. جستجو در متن، جستجو و جایگزینی (Search and Replace) هم از دیگر قابلیتهای بسیار رایج این تکنولوژی هستند. شاید جالب باشد اگر بدانید که قابلیت Search and Replace نرم افزار ++Notepad نیز، که یکی از بهترین ویرایشگرهای متن و کد در سیستم عامل ویندوز است، با استفاده از کدهای رجکس نوشته شده است.
استفاده بدون محدودیت از رجکس
همانطور که در ابتدای این مقاله هم اشاره کردیم، برای استفاده از Regex، به یک IDE و کامپایلر نیاز دارید. این دو ابزار در ابتدا محیطی را فراهم میکنند که موجب میشود شما بتوانید کدهای خود را بنویسید و سپس رشته کد شما را اجرا میکنند.
پیشرفت تکنولوژی موجب شده که بیشتر فعالیتهای برنامه نویسان از محیط لوکال به سمت سرور انتقال پیدا کند. تکنولوژی Regex هم از این پیشرفت بینصیب باقی نمانده و با کمی جستجو توانستیم یک محیط آنلاین فوقالعاده کاربردی برای نوشتن و اجرای آنلاین کدهای Regex پیدا کنیم.
وبسایت regexer.com به صورت تخصصی بر روی تکنولوژی Regex تمرکز کرده و در صفحه اصلی این وبسایت یک ویرایشگر متنی inline قرار گرفته که میتواند بهصورت لحظهای، ورودی و دستور شما را بررسی کرده و خروجی آن را به شما نشان دهد.
از آنجایی که این سایت بر روی بستر وب قرار گرفته، برای استفاده از آن تنها به یک مرورگر نیاز خواهید داشت. از طرفی کوتاه بودن رشته کدهای تکنولوژی Regex هم موجب میشود که حتی بتوانید با موبایل از این ابزار آنلاین استفاده کنید!
با کلیک بر روی لینک بالا میتوانید به این وبسایت دسترسی داشته باشید. بر اساس بررسیهای ما وبسایت Regexer کاملترین وبسایتی است که در حوزه تکنولوژی Regex فعالیت میکند. این وبسایت علاوه بر مفسر آنلاین خود، آموزشهای بسیاری را برای کار با تکنولوژی Regex آماده کرده که استفاده از آنها قطعا برای علاقهمندان به این تکنولوژی جذاب خواهد بود.
آموزش استفاده از Regex در سرچ کنسول گوگل
اگر تا قبل از این مقاله فکر میکردید که استفاده از Regex محدود به برنامه نویسان است، باید بگوییم که اشتباه میکردید! تقریبا 2 سالی است که امکان گزارشگیری از ابزار سرچ کنسول به کمک رشته کدهای Regex فراهم شده و بهعبارتی این ابزار پراستفاده گوگل، از این تکنولوژی بهطور کامل پشتیبانی میکند.
میتوان گفت که استفاده از Regex در بخش Performance ابزار سرچ کنسول، بیشترین جذابیت را میان کاربران داشته است. وبلاگ توسعه دهندگان گوگل به منظور استفاده از Regex در ابزار سرچ کنسول، مقالات مختلفی را منتشر کرده است، که ما در این مقاله تنها به بررسی نحوه استفاده از Syntax رجکس برای گزارش گیری از بخش Performance میپردازیم.
برای افزودن فیلترهای گزارش گیری به کمک Regex، ابتدا از سایدبار سمت چپ سرچ کنسول گوگل، بر روی بخش “Performance” کلیک میکنیم. همانطور که میدانید، در این بخش میتوانید عملکرد کلی سایت خودتان را مشاهده کنید.
در بالای نمودار عملکرد سایت، بر روی گزینه “NEW +” کلیک میکنیم. با این کار پنجره جدیدی برای شما بازخواهد شد که شامل دو سربرگ اصلی FILTER و COMPARE میباشد. در سربرگ Filter بر روی اولین منوی آبشاری کلیک میکنیم و در میان گزینههای موجود، بر روی گزینه “Custom (regex)” کلیک میکنیم.
اکنون سرچ کنسول، فضایی برای نوشتن کدهای Regex و یک منوی آبشاری دیگر برای انتخاب نحوه ارائه گزارشات به شما ارائه میکند. این منو آبشاری شامل دو گزینه است:
- Matches regex: در میان تمامی دادههای سایت، تنها گزارشاتی که با رشته کد شما تطابق دارد را به شما نشان میدهد.
- Doesen’t match regex: در میان تمامی دادههای سایت، تنها گزارشاتی که با رشته کد شما تطابق ندارند را به شما نشان میدهد.
نهایتا آخرین فیلد هم که در تصویر با متن “woohoo” مشخص شده، محل قرارگیری رشته کد Regex شماست. استفاده از Regex، میتواند وجه تمایز شما با سایر متخصصین SEO باشد!
سخن پایانی
در این مقاله از آقای وب بلاگ، به بررسی تکنولوژی Regex، اصول پایه استفاده از آن و نحوه استفاده از Regex در ابزار سرچ کنسول گوگل پرداختیم. میتوان گفت که باوجود امکانات بسیار زیاد این سینتکس، استفاده از آن در میان توسعه دهندگان ایرانی، کمتر از سایر توسعه دهندگان است و این تکنولوژی جذاب در ایران کمی ناشناخته است. شاید تعدد بالای دستورات این سینتکس را بتوان از جمله دلایل آن دانست. با این حال استفاده از عبارات با قاعده که بیشتر آن را با نام Regex میشناسیم، میتواند در بسیاری از موارد، سرعت کار ما را به شکل چشمگیری ارتقا دهد.
نهایتا امیدواریم که از این نوشته بهره کافی را برده باشید. هدف ما در تیم آقای وب، پاسخگویی به سوالات و برطرف کردن مشکلات اولیه شماست. پس چنانچه سوالی در رابطه با این نوشته دارید، از طریق بخش ارسال نظرات در پایین این برگه با ما در ارتباط باشید.
موفقیت همراه راهتان باد.
4.7
3
رای ها
امتیازدهی به مقاله
URL Copied