سلام دوستان عزیز من میخواهم با شما در مورد یک موضوع جالب و مفید صحبت کنم که اسمش رجکس یا عبارات با قاعده است. شاید برای شما این اسم یکم عجیب و غریب باشه، ولی وقتی بفهمی چیه و چه کاربردی داره، مطمئنم که دوستش خواهی داشت.
رجکس چیه؟
رجکس یک روش برای تعریف الگوهای متنی است که میتواند در جستجو، جایگزینی، تحلیل و دیگر عملیاتهای مربوط به متن مفید باشد. رجکس در بسیاری از زبانهای برنامهنویسی مانند جاوااسکریپت و سی شارپ و... پشتیبانی میشود و میتواند کار با متن را سریعتر و دقیقتر کند.
رجکس چه کاربردی داره؟ رجکس میتواند در بسیاری از موارد کاربردی متنی به شما کمک کنه. برای مثال، شما میتوانید با رجکس:
- بررسی کنید که یک رشته با یک الگو مطابقت داره یا نه. مثلا بررسی کنید که یک ایمیل معتبره یا نه.
- بخشهایی از یک رشته را استخراج کنید که با یک الگو مطابقت دارند. مثلا شماره تلفنهایی را که در یک متن وجود دارند پیدا کنید.
- بخشهایی از یک رشته را با بخشهای دیگری جایگزین کنید که با یک الگو مطابقت دارند. مثلا کلمات نامناسب را در یک متن با ستاره جایگزین کنید.
- تعداد بارهایی که یک الگو در یک رشته تکرار شده است را بشمارید. مثلا تعداد کلماتی را که با حرف a شروع میشوند در یک متن بشمارید.
رجکس چه قواعدی داره؟ رجکس یک زبان خاص خودش رو داره که با استفاده از کاراکترهای مختلف، الگوهای متنی رو تعریف میکنه. این کاراکترها میتوانند دو نوع باشند:
- کاراکترهای عادی: این کاراکترها خودشون رو نشون میدن و با همون کاراکتر مطابقت دارن. مثلا a با a مطابقت داره ولی با b نداره.
- کاراکترهای ویژه: این کاراکترها یک معنی خاص رو نشون میدن و با یک دسته از کاراکترها مطابقت دارن. مثلا . با هر کاراکتری مطابقت داره ولی با خط جدید \n نداره.
برای مثال، اگر بخواهیم یک الگو برای شناسایی شماره تلفن ایرانی بنویسیم، میتوانیم از کاراکترهای عادی و ویژه استفاده کنیم. یک شماره تلفن ایرانی معمولا به این شکل است:
- شروع میشود با 0
- سپس یک عدد بین 1 تا 9
- سپس 9 عدد دیگر که میتوانند هر چیزی باشند
بنابراین، یک الگوی رجکس برای شناسایی شماره تلفن ایرانی میتواند به این شکل باشد:
/0[1-9]\d{9}/
این الگو به این معنی است که:
- شروع میشود با 0
- سپس یک کاراکتر عادی که باید بین 1 تا 9 باشد. برای نشان دادن این بازه از کاراکتر ویژه [ ] استفاده میکنیم.
- سپس 9 کاراکتر ویژه که باید هر عددی باشند. برای نشان دادن هر عددی از کاراکتر ویژه \d استفاده میکنیم. برای نشان دادن تعداد تکرار از کاراکتر ویژه { } استفاده میکنیم.
این الگو با شمارههای تلفنی مانند 09123456789 یا 02187654321 مطابقت دارد ولی با شمارههای تلفنی مانند 00123456789 یا 0218765432 مطابقت ندارد.
رجکس چه توابعی داره؟ رجکس میتواند با توابع مختلفی که در زبانهای برنامهنویسی موجود هستند ترکیب شود و عملیاتهای مختلفی را روی متن انجام دهد. برای مثال، در زبان جاوااسکریپت، ما میتوانیم از توابع زیر استفاده کنیم:
این تابع بررسی میکند که یک رشته با یک الگوی رجکس مطابقت دارد یا نه و مقدار test رو => true or false برمیگردونه.مثلا:
اگر دوست دارید با من در ارتباط باشید:?
?:لینکدین
?:گیت هاب
?:توییتر