در علوم کامپیوترعلوم کامپیوتر یا کامپیوتر ساینس چیستدر این صفحه به بررسی و موشکافی رشته علوم کامپیوتر اعم از بررسی بازار کار، گرایشها، دروس و چارت درسی این رشته، میزان درآمد و حقوق فارغ التحصیلان این رشته و ادامه تحصیل در این رشته پرداخته شده است. مبحثی وجود دارد با نام عبارت های منظم یا عبارات با قاعده (Regular Expressions) که به اختصار به آن Regex میگویند. عبارت های منظم، ترکیبی سمبلیک از حرفها و علامتها هستند که برای مقایسه و جستجو در رشتهرشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسیاین مقاله به معرفی رشته (String) یا استرینگ در برنامه نویسی، رشته در پایتون، رشته در C++ و همین طور الگوریتمهای معروف مربوط به رشته ها در برنامه نویسی پرداخته ها (Strings) مورد استفاده قرار میگیرند. استفاده از عبارتهای با قاعده باعث میشود حجم کدهای نوشته شده و شرطهای برنامه نویسیبرنامه نویسی کامپیوتر چیست و چطور می توانید یک برنامه نویس موفق شوید؟در عصر فعلی برنامهنویسی یکی از پرطرفدارترین شغلهای دنیاست، دغدغهای افرادی که میخواهند در مسیر برنامهنویس شدن قدم بردارند این است که نمیدانند از کجا باید شروع کنند، در این صفحه هر آن چه برای تبدیل شدن به یک برنامه نویس حرفه ای نیاز دارید در اختیارتان قرار گرفته است کمتر شود و علاوه بر قابل فهم بودن کد و راحتی نوشتن آن، فرایند اشکال زدایی (Debugging)دیباگ چیست؟ معرفی روشها و ابزارهای دیباگینگ(اشکال زدایی)این مقاله عالی مفاهیم دیباگ (debug)، دیباگینگ (Debugging) یا همان اشکال زدایی، دیباگر (Debugger) را معرفی و همچنین روشها و ابزارهای دیباگینگ را بررسی کرده و نوشتن تست نرم افزارتست نرم افزار چیست؟ – انواع، روش ها و اهمیت تست نرم افزارتست نرم افزار چیست؟ این مقاله عالی به بررسی انواع تست های نرم افزاری، بهترین روش ها برای تست نرم افزارها و اهمیت تست نرم افزار پرداخته است بسیار سادهتر میشود. بهتر است با یک مثال عملکرد دقیق Regex را بررسی کنیم.
مثالهایی از عبارات با قاعده یا Regex
فرض کنید در حال ساختن یک وبسایت درگاه بانکی هستید و از کاربر میخواهید تا شماره کارت بانکی خود را وارد کند؛ همچنین برای جلوگیری ازباگمعنی باگ چیست | باگ یعنی چه؟ | انواع باگ های نرم افزاریاین مقاله عالی به توضیح معنی باگ (bug)، معرفی انواع باگ های نرم افزاری، توضیح آنکه چگونه از پدید آمدن باگ جلوگیری کنیم؟ و در نهایت نحوه رفع باگ پرداخته های احتمالی، قصد دارید تا قبل از تعامل با پایگاه دادهپایگاه داده چیست؟ – انواع، مفاهیم و کاربردهاپایگاه داده چیست؟ این مقاله به بررسی این موضوع و همچنین انواع پایگاه داده، کاربردهای پایگاه داده، محبوب ترین پایگاه های داده و اجزای اصلی پایگاه داده پرداخته و بررسی شماره حساب کاربر، از صحت الگوی حساب بانکی وارد شده اطمینان حاصل کنید. برای اینکار 2 راهکار پیشروی شما است، راه اول نوشتن چند شرطشرط در برنامه نویسی ⚡️ آشنایی کامل با if و elseاین مقاله عالی شرط در برنامه نویسی را بطور کامل توضیح داده و انواع شرط ها در برنامه نویسی که شامل if و else و Switch است را نیز با مثال توضیح داده از طریق کدنویسیکدنویسی چیست؟ – کد نویسی یعنی چهاین مقاله عالی به بررسی این پرداخته که کد نویسی چیست و مفهوم کد نویسی را بررسی کرده، همچنین تفاوت کدنویسی و برنامه نویسی و کاربرد های کدنویسی را بررسی کرده است، راه دوم که راه سادهتر و کوتاهتری میباشد، استفاده از عبارت های منظم است. ما میدانیم که شماره کارت میبایست تنها از اعداد تشکیل شده باشند (نه حروف) و اینکه حتما 16 رقم داشته باشند؛ نه کمتر و نه بیشتر؛ بنابراین 2 شرط برای بررسی الگوی شماره کارت مورد نیاز است.
الگوی عبارت منظم این شرط به صورت ^\d{16} است؛ بنابراین تنها کافی است بررسی کنیم آیا شماره کارت وارد شده طبق این الگو میباشد یا خیر. جلوتر درباره نحوه ساخته شدن این الگو بیشتر توضیح میدهیم؛ بنابراین همانطور که مشاهده میکنید، با استفاده از عبارت های منظم کارمان بسیار سادهتر شده است.
بررسی قوانین ابتدایی عبارات با قاعده (Regular Expressions)
نوشتن عبارات با قاعده در زبان های برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده مختلف، ممکن است تفاوتهای کوچکی با یکدیگر داشته باشند، اما منطق و نمادهای آنها یکی است و با یادگرفتن اصول کلی آن میتوانید در هر زبانی که خواستید از این عبارات استفاده کنید. در اینجا برخی از قوانین ابتدایی و مهم را باهم بررسی میکنیم:
- از \d برای الگوی عددی استفاده میشود.
- عبارت “\d\d” معادل رشتهی "13" یا "01" است.
- از \w برای الگوی حروف انگلیسی استفاده میشود.
- عبارت “\w\w\w” میتواند الگوی “abc” و “bob” را تشخیص دهد.
- عبارت “\w\d\d”میتواند الگوی “a47” را تشخیص دهد.
- از نقطه یا . میتوان برای جایگزین کردن هر حرفی استفاده کرد.
- عبارت “….” تمامی الگوهای چهار حرفی را تشخیص میدهد، مانند “amir” و “25_H”.
- برای مشخص کردن تعداد تکرار حروف در عبارت های منظم از چندین علامت استفاده میشود. از علامت “?” برای تکرار دقیقا صفر یا یک بار، از علامت “*” برای تکرار صفر یا بیشتر و در نهایت از علامت “+” برای تعداد یک یا بیشتر استفاده میشود. نمونههای استفاده از هرکدام را در زیر مشاهده میکنید:
- عبارت منظم “\w+” معادل رشتههای “a” ، “ab” ، “reza” و... است.
- عبارت منظم “a*b” معادل رشتههای “ab” ، “acb” ، “abbbftjiorgtb” است.
- عبارت منظم “\d?code” معادل رشته های “0code” ، “2code” و “code” است.
- برای استفاده از تعداد محدودی از حروف یا اعداد در یک الگو، از کروشه یا [ ] استفاده میکنیم.
- عبارت “ [0123456789]\w+” تمامی رشته هایی که با یک عدد شروع میشوند را تشخیص میدهد.
- عبارت“[ab]\d” معادل رشتههای “a0” ، “b3” ، “a9” است.
- برای استفاده از عبارت "یا" از سمبل پایپ یا همان “|” استفاده میشود.
- عبارت “ab|ba” تنها یکی از دو رشتهی “ab” و یا “ba” را میپذیرد.
- یکی از علامتهایی که برای تعداد حروف یک رشته شرط تعیین میکند، آکولاد یا { } است. روشهای مختلفی برای استفاده از آکولاد وجود دارد.
- نوع اول: تعداد دقیق تکرار: مانند {5}
- عبارت “\d{3}” معادل رشتهای با تعداد 3 رقم میباشد مانند “123” و یا “666”.
- نوع دوم: تعیین دامنه برای تعداد: {2,4} یعنی حداقل 2 حرف و حداکثر 4 حرف
- عبارت “\d{1,4}” رشتههای “1” ، “12” ، “123” ، “1234” ، “458” و... را میپذیرد.
- نوع سوم: برای تعیین حداقل: {2,} یعنی حداقل 2 و حداکثر بینهایت.
- عبارت “\w{2,}” معادل رشتههایی است که حداقل از 2 حرف تشکیل شده باشند؛ مانند “ab” و یا “konkur”.
- نوع اول: تعداد دقیق تکرار: مانند {5}
- در عبارات با قاعده علامتهایی وجود دارند که با سمبلهای بالا ادغام شده و مفهوم جدیدی را بوجود میآورند.
- از علامت خط تیره (Dash) یا“-“ داخل [ ] برای ایجاد بازه استفاده میشود:
- [a-z] یعنی تمامی حروف الفبای انگلیسی از a تا z
- [0-9] یعنی تمامی اعداد از 0 تا 9
- [b-g] معادل [bcdefg] است.
- از علامت “^” یا Caret در اول [ ] میتوان به عنوان نقیض استفاده کرد و روی رشتهها محدودیت حروف گذاشت.
- عبارت[^0-9] یعنی تمامی حروف به غیر از دامنه اعداد 0 تا 9
- از علامت خط تیره (Dash) یا“-“ داخل [ ] برای ایجاد بازه استفاده میشود:
بررسی چند مثال تخصصی از Regex
در این قسمت چند نمونه از الگوهای Regex در دنیای واقعی را بررسی میکنیم.
بررسی آدرس ایمیل توسط Regex
یک آدرس ایمیل معتبر به شکل این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید میباشد، یعنی از یک Username تشکیل شده است، بعد از آن یک سمبل @ میآید؛ سپس نام Mail Server و در نهایت دامنه که با یک دات "." از Mail Server جدا شده است. الگوی عبارت منظم برای تشخیص الگوی یک آدرس ایمیل مانند زیر است:
/^[a-zA-Z0-9._]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
- “/”: شروع و پایان الگو را مشخص میکند.
- “^”: مشخص کننده شروع رشته است. (در ابتدای رشته به عنوان مثال نمیتوانیم از سمبل @ استفاده کنیم.)
- “[a-zA-Z0-9._]+”: برای بررسی کردن این است که حداقل یک کاراکتر انگلیسی و حرف (در بخش نام کاربری) وجود داشته باشد، حداکثر هر تعدادی از حروف و ارقام میتواند باشد.
- “@”: بررسی میکند که حتما علامت @ بعد از نام کاربری آمده باشد.
- “[a-zA-Z0-9.-]+”: برای بررسی کردن قسمت نام Mail Server است که میتواند شامل حروف الفبای انگلیسی، ارقام و دات و... باشد.
- “\.”: وجود یک نقطه بعد از نام Mail Server را بررسی میکند. این نقطه حتما باید وجود داشته باشد.
- “[a-zA-Z]{2,}”: برای بررسی کردن نام دامنه است که میبایست تنها از حروف انگلیسی تشکیل شده باشد و حداقل باید 2 حرف را شامل شود.
بررسی رمز عبور توسط Regex
احتمالا موقع ثبت نام در یک وبسایت و تعیین رمز با یکسری مقررات خاصی مواجه شدهاید، از اصولیترین و معروفترین این مقررات میتوان به موارد زیر اشاره کرد:
- حداقل شامل 8 کاراکتر باشد.
- هم از حروف انگلیسی تشکیل شده باشد و هم از ارقام.
- حداقل از یک سمبل (مانند !@#$%^&*) در تعیین رمز استفاده شده باشد.
- حداقل از 1 حرف بزرگ یا Capital استفاده شده باشد.
کد Regex پیاده سازی این الگو به صورت زیر است:
^(?=.*[A-Z])(?=.*[!@#$%^&*])(?=.*[a-zA-Z])(?=.*\d).{8,}$
- “/”: شروع و پایان الگو را مشخص میکند.
- “(?=.*[A-Z])”: بررسی میکند تا حداقل یک حرف بزرگ وجود داشته باشد.
- “(?=.*[!@#$%^&*])”: بررسی میکند تا حداقل یک سمبل در رشته وجود داشته باشد.
- “(?=.*[a-zA-Z])”: بررسی میکند تا حداقل یک حرف انگلیسی بزرگ و یا کوچک در رشتهی رمز عبور وجود داشته باشد.
- “(?=.*\d)”: بررسی میکند تا حداقل یک رقم در رشتهی رمز عبور وجود داشته باشد.
- “.{8,}”: برای بررسی این است که رشتهی مورد نظر حداقل باید از 8 حرف (شامل تمامی موارد ذکر شده) تشکیل شده باشد که البته جای خالی شامل آن نمیشود.
عبارت منظم یا Regular Expression در برنامه نویسی
تا اینجا به بررسی تئوریات عبارت های منظم پرداختیم؛ بد نیست نگاهی به پیاده سازی آن در زبانهای برنامه نویسی بیاندازیم.
پیاده سازی الگوی بررسی ایمیل به زبان PHP
پیاده سازی عبارت Regex برای بررسی ایمیل در زبان PHP به صورت زیر است:
$email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید";
if (preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email)) {
echo "Valid email address";
} else {
echo "Invalid email address";
}
تابع Preg_Match() دو پارامتر به عنوان ورودی دریافت میکند؛ پارامتر اول الگو یا همان Pattern است، پارامتر دوم رشتهای است که قصد بررسی آن را داریم. در اینجا ایمیل مورد نظر در متغیر متغیر در برنامه نویسی چیست ⚡️انواع متغیر در برنامه نویسیاین صفحه عالی بررسی کرده متغیر در برنامه نویسی چیست و انواع متغیر در برنامه نویسی را معرفی و مراحل کار با متغیر، نحوه تعریف و قوانین نامگذاری متغیرها را گفته $email ذخیره شده است.
پیاده سازی الگوی بررسی رمز عبور در پایتون
پیاده سازی عبارت منظم بررسی رمز عبور در زبان برنامه نویسی پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته به صورت زیر است:
import re
password = "SecurePass123!"
pattern = r'^(?=.*[A-Z])(?=.*[@!$%^&*])(?=.*[a-zA-Z])(?=.*\d).{8,}$'
result = "Valid password" if re.match(pattern, password) else "Invalid password"
print(result)
تابع Re.match() همانند زبان Php یک تابع است که دو ورودی دریافت میکند؛ ورودی اول الگوی Regex است و ورودی دوم رشتهی مورد بررسی. در اینجا عبارت منظم در متغیر pattern و رشتهی مورد نظر در متغیر password ذخیره شده است.
جمعبندی
عبارات منظم یکی از اصول مهم در برنامه نویسی و یافتن الگوهای رشتهای در متون انگلیسی است. بسیاری از وبسایتها و یا برنامههای هوش مصنوعیهوش مصنوعی (AI) چیست؟ انواع، کاربردها، مزایا و معایبهوش مصنوعی یا Artificial Intelligence یا به اختصار AI، امروزه کاربردهای بسیاری پیدا کرده و به یکی از داغترین حوزههای بشر تبدیل شده است، اما با این وجود بسیاری از افراد با کاربردهای آن آشنایی کامل ندارند، به همین علت در این صفحه کاربردها، مزایا و معایب AI بطور کامل بررسی شده است از این مبحث در کارهای خود استفاده میکنند. در این مقاله به بررسی چیستی عبارات با قاعده یا همان عبارت های منظم پرداختیم و مثالهایی را پیاده سازی کردیم تا با نحوه استفاده از این علم بیشتر آشنا شوید.
منظور از عبارت های منظم (Regular Expressions) چیست؟
عبارت های منظم ترکیبی سمبلیک از حرفها و علامتها هستند که برای مقایسه و جستجو در رشتهها (Strings) مورد استفاده قرار میگیرند. به وسیله عبارت های منظم میتوان الگوی یک رشته را بررسی و در آن جستجو کرد.
چرا از عبارت های منظم استفاده میشود؟
عبارت های منظم به صورت یک الگو یا Pattern قابل پیادهسازی است و به وسیله آنها تنها با یک شرط که آیا رشتهی مورد نظر از الگو پیروی میکند یا خیر میتوان به خواستههایمان در مورد یک رشته برسیم. بدون عبارت های منظم ممکن است شروط بررسی یک رشته به دهها عدد نیز برسد.