Regex چیست

اگر در حال برنامه نویسی یا سئو هستید، حتما با کلمه Regex روبرو شده اید. در این مقاله قصد داریم به توضیح کامل Regex چیست بپردازیم و همه انواع Regular Expressions را به شما معرفی کنیم. مطالبی که در این صفحه خواهید خواند: Regex چیست مزیت های Regex معایب Regex کاربرد Regular Expression در جاوا […]

نکته: در صورتی که نیازمند قرار گرفتن آموزش خاص و یا مطلبی به صورت رایگان در حوزه های حسابداری و کامپیوتر هستید آن را در قسمت نظرات همین صفحه وارد کنید.

اگر در حال برنامه نویسی یا سئو هستید، حتما با کلمه Regex روبرو شده اید. در این مقاله قصد داریم به توضیح کامل Regex چیست بپردازیم و همه انواع Regular Expressions را به شما معرفی کنیم.

Regex چیست

regex یا Regular Expressions در فارسی به عبارات باقاعده یا عبارت‌ های منظم معنی شده که اصطلاحا regexp هم گفته می‌ شود. این عبارت‌ ها در واقع یک سری متون معمولی هستند که توسط پردازشگر های عبارات های با قاعده ارزشمند شده و برای جستجو، یافتن و مطابقت یک یا چند الگوی جستجوی خاص مورد استفاده قرار می‌ گیرند. بنابراین این عبارات در زمان استخراج اطلاعات از هر متنی کاملا مفید می باشند.

مثلا ویرایشگری مانند Notepad++ از Regext به منظور سرچ و Replace استفاده می کند.

به عبارتی دیگر Regular Expressions عبارت‌هایی هستند متشکل از کاراکترها و متا کاراکتر هایی که به کمک آنها می‌ توانیم الگوهای مورد نظرمان را تعریف کرده و به کم آنها از داده هایمان گزارش‌گیری‌‌ کرده و یا تحلیل‌ انجام بدهیم.

همانطور که در مقاله گزاراشات performance در سرچ کنسول در مورد regex توضیح داده شد، زمینه‌ های کاربرد regex از اعتبارسنجی، تجزیه، جایگزینی رشته‌ها، ترجمه داده‌ها به قالب‌های دیگر و وب اسکرپینگ متفاوت است.

از قابلیت‌ های کاربردی Regex همین بس که، بعد از یادگیری ساختار کلی Regular Expressions می‌ توانید در اکثر زبان‌ های برنامه‌ نویسی از آنها استفاده کنید. یا وقتی از گوگل آنالیتیکس و سرچ کنسول برای بررسی و تحلیل وب سایت ها استفاده می‌ کنید، حتما سرو کارتان با عبارات با قاعده یا همان regex هم می‌ افتد. اگر با این دور ابزار قدرتمند آشنایی ندارید، حتما از آموزش سرچ کنسول گوگل و آموزش آنالیتیکس استفاده کنید.

پیشنهاد ویژه: برای کسب رتبه های تاپ در نتایج گوگل و افزایش ترافیک وب سایت خود، از خدمات آموزش سئو ما استفاده کرده و یا در کلاس سئو مجتمع فنی آریا تهران شرکت کنید.

مزیت های Regex

  • سادگی دستوری.
  • کاربردی بودن.
  • ذخیره کردن زمان برای کد نویسی و جستجو.
  • جستجو را در کسری از ثانیه انجام می دهند.
  • یک خط Regex می تواند با ۱۰۰ خط کد برای جستجو جایگزین شود.
  • ساده ترین روش برای برش (Trim) و چسباندن (concatenation) است.
  • در جاهای که مقدار تگ ها متفاوتی وجود داشته باشد مثل Xml و Html برای جستجو کردن مورد استفاده قرار می گیرد.
  • عمل parse کردن را در بدترین شرایط انجام میدهد

معایب Regex

  • Regex فقط برای متن است.
  • سختی در حفظ دستورات مربوط به Regex. باید یک Dictionary مربوط به آن را حفظ کنید.
  • قابل توسعه نیست
  • تنبل کننده ذهن برنامه نویس

کاربرد Regular Expression در جاوا اسکریپت

اگر علم برنامه نویسی اگر بخواهیم در یک متنی عبارتی را جستجو کنیم به راحتی می توانیم از توابع Find و Replace استفاده کنیم. اما اگر قصد جستجوی ساختاری منطقی را داشته باشیم این کار به راحتی با توابع مذکور قابل انجام نیست. اینجاست که عبارات با قاعده یا Regular Expression به کک ما خواهند آمد.

برای این کار میبایست در regex یک الگو یا Pattern تعریف کنیم. در الگو نشانه های معناداری وجود دارند که در زیر به برخی از آنها اشاره خواهیم کرد.

پیشنهاد ویژه: اگر نیاز به طراحی سایت، باز طراحی سایت و یا عیب یابی سایت دارید همین حالا می توانید از خدمات طراحی سایت ارزان مجموعه آریا تهران استفاده کنید.

Regular Expressions

Regular Expressions

با توجه به تعریف بالا، در ادامه به معرفی این عبارات باقاعده و کاربرد آنها خواهیم پرداخت. اما قبل از آن بصورت کلی به دسته بندی زیر توجه داشته باشید.

از آنجا که اساس این آموزش برای یادگیری استفاده از سرچ Regex در سرچ کنسول و آنالیتیکس قرار گرفته است، توضیحات بعدی نیز بر همین اساس ارائه خواهند شد. هر چند اساس استفاده از این کاراکتر ها در سایر برنامه ها تفاوتی ندارد.

متا کارکتر ” ^

متاکارکتر فوق در انگلیسی Caret (^) خوانده می شود. علامت کارِت یک Regex کاربری است به معنی: شروع شود با….

اگر این کارکتر قبل از عبارت مورد جستجو قرار بگیرد، جستوی شما شامل عبارات و رشته هایی است که با آن عبارت خاص شروع شده است. مثلا اگر در سرچ کنسول قسمت سرچ REGEX بنویسید ^آموزشگاه، تمام نتایج شما با عبارت آموزشگاه شروع می شود. مثلا آموزشگاه آریا تهران، آموزشگاه طراحی سایت و… ولی عبارت بهترین آموزشگاه در نتایج شما دیده نخواهد شد.

متا کارکتر ” $ “

علامت دلار Dollar sign ($) برعکس علامت Caret (^) عمل می کند. این علامت یعنی: خاتمه پیدا کن با…

اگر این متا کارکتر قبل از عبارت مورد جستجو قرار بگیرد، جستوی شما شامل عبارات و رشته هایی است که با آن عبارت خاص خاتمه می یابد شده. مثلا اگر در سرچ کنسول قسمت سرچ REGEX بنویسید $آموزشگاه، تمام نتایج شما به عبارت آموزشگاه ختم می شود. بهترین آموزشگاه، آموزش برنامه نویسی در آموزشگاه و… ولی عبارت معتبرترین آموزشگاه تهران در نتایج شما دیده نخواهد شد، چرا که به تهران ختم شده.

استفاه ترکیبی از متا کارکتر ” $ ” و متا کارکتر ” ^ “

با توجه به عملکرد و خاصیت این نوع REGEX ها می توانید از آنها بصورت ترکیبی هم استفاده کنید. یعنی اگر ما عبارت ^آموزشگاه تهران$ را سرچ کنیم، جستجوی ما می بایست شامل رشته ها و عباراتی باشد که با آموزشگاه شروع و به تهران ختم شود. مثل آموزشگاه طراحی سایت در تهران.

متا کارکتر “” | “”

متا کارکتر Pipe (|) یا اصطلاحا پایپ به معنی یا است. یعنی، یا این، یا آن.

این کارکتر معمولا بین دو عبارت قرار می گیرد. مثلا اگر در سرچ کنسول و آناللیتیکس قسمت سرچ REGEX بنویسید کامپیوتر|icdl، تمام نتایج شما به عبارت ها و رشته هایی خواهند بود که یا شامل کلمه کامپیوتر هستند و یا کلمه icdl و یا هر دو.

علامت “” * “”

علامت ستاره (*) که در انگلیسی Asterisk گفته می شود، در سرچ regex و برنامه نویسی به معنی تکرار صفر یا چند باره‌ کاراکتر قبلی‌ اش است. مثالا اگر شما بنویسید re*d نتایج شما شامل red, reed, reeed, خواهد بود.

توجه داشته باشید که قدرت و اهمیت متاکاراکتر ستاره زمانی معلوم می‌ شود که آن را همراه با متا کاراکتر نقطه به کار ببرید.

علامت “” . “”

علامت نقطه (.) که در انگلیسی Dot خوانده می شود، اگر در انتهای عبارتی قرار بگیرد یعنی در سرچ regex و برنامه نویسی می بایست آن عبارت جزئی از نتیجه باشد. مثالا سرچ و فراخوانی .ook تمام نتایجی که دارای کلماتی مثل book, cook, look, took و… است را در برخواهد داشت.

توجه داشته باشید که همانطور که پیش تر گفته شد، قدرت این متاکاراکتر در استفاده آن همراه با دیگر متا کاراکترهای RegEx آشکار می‌ شود.

استفاده ترکیبی از علامت نقطه و علامت ستاره

ترکیب نقطه و ستاره می تواند ترکیب مفید و کارآمدی باشد. این ترکیب نماینده‌ی صفر یا چند کاراکتر تصادفی است. به عبارتی می‌تواند جانشین هر چیزی شود.

موارد زیادی پیش می‌آید که بخواهید از این ترکیب استفاده کنید. مثلا فرض کنید شما وب سایتی دارید که در آن تی شرت مردانه، زنانه، و بچگانه می‌فروشید. و این سه دسته ‌بندی را در وبسایت شما موجود است:

  • /products/men/T-shirt/
  • /products/women/T-shirt/
  • /products/kids/T-shirt/

اگر برای گزارش گیری از عبارت های باقاعده نقطه و ستاره بصورت /products/.*/cycles/ استفاده کنید، گزارش مورد نظر شما در گوگل آنالیتیکس و سرچ کنسول هر سه این دسته‌ بندی‌ ها را در بر می‌ گیرد.

علامت “” () “”

علامت پرانتز () که در انگلیسی Parentheses خوانده می شود. دقیقا هم معنای معادل ریاضی آن است. یعنی تمام عبارت های داخل پرانتز با هم در یک گروه هستند.

به مثال قبل توجه کنید.

دیدیم که ترکیب دو کاراکتر نقطه و ستاره جایگزین هر چیزی می‌ شد. حالا اگر بخواهید نتیجه مورد نظر صد در صد همان چیزی باشد که می‌ خواهیم می‌توانیم از این ترکیب RegEx استفاده کنیم:

$/products/(men|women|kids)/ T-shirt / ^

یعنی شروع بشه با / products / بعد یا men یا women یا kids قرار بگیره و بعد به / T-shirt / خاتمه پیدا کنه.

به عبارتی دیگر

URLهای درخواستی ما آنهایی هستند که با /products شروع می‌ شوند و با cycles/ تمام می‌شوند.

دایرکتوری وسطی می‌ تواند هر یک از کلمات men ,women, kids باشد.

علامت “” ? “”

علامت سوال (?) که در انگلیسی Question mark خوانده می شود، یعنی کاراکتر آخر می‌ تواند هر چیزی باشد.

معمولا از این کاراکتر زمانی استفاده می‌‌ کنید که بخواهید غلط‌ های تایپی کاربران را هم پوشش دهید. فرض کنیم قرار است تمام کلمات مربوطه به محصول reebok را بررسی کنید و این کلمه با عبارت های اشتباهی مثل rebok یا reebook سرچ می شو. خوب برای اطلاع از نتایجی از این دست استفاده از کارکتر ? کارساز است.

کافی ایست به کمک علامت پایپ () بنویسد reeboo?k|ree?bok .در این حالت با هر رشته‌ای که در ابتدایش کاراکترهای re و در ادامه صفر یا یک کاراکتر e داشته باشد و یا با هر رشته‌ای که در ابتدایش کاراکترهای reboo و در ادامه صفر یا یک کاراکتر o داشته باشد تطبیق می‌ یابد.

علامت “”\””

علامت بک اسلش “”\”” که در انگلیسی Backslash نوشته می شود در واقع اگر قبل از هر Regular Expressions (پیش تر تعدای از آنها را معرفی کردیم) قرار بگیرد، آن را بی اثر می کند. مثالا IP آدرس زیر را در نظر داشته باشید.

IP address = 67.172.171.105

پیش از هر کلمه یک علامت نقطه وجود دارد که پیش تر مورد تاثیر ان توضیح دادیم. اگر بخواهیم هنگام سرچ regex اثر این نقطه ها را عادی کنیم، می توانیم از بک اسلش استفاده کنیم تا صرف فقط خود IP تحلیل شود مثل: IP address = 67\.172\.171\.105

Request URI = /gp/product/B009TGWVRG/ref=s9_nwrsa_gw_g318_i3 ? pf_rd_m=ATVP

یا url بالا را دنظر بگدید که در دل خودش یک علامت ? دارد. برای بی اثر کردن این regex باید از بک اسلش استفاده کنید.

Request URI = /gp/product/B009TGWVRG/ref=s9_nwrsa_gw_g318_i3\?pf_rd_m=ATVP

علامت “” -“”

خط تیره (-) که در انگلیسی به آن Dashes گفته می شود، و به معنی تا استت. به کمک این علامت می‌ توانید لیست‌ هایی پیشرفته‌ بسازید، بخصوص اگر از کروشه هم کمک بگیرید.

  • مثلا عبارت [a-z] یعنی جتسجوی ما تمام حروف کوچک الفبا را در بر می‌ گیرد.
  • [A-Z] یعنی جستجوی ما تمام حروف بزرگ الفبا را شامل می شود.
  • [۰-۹] یعنی جستجوی ما همه اعداد را در بر خواهد داشت .
  • [a-zA-Z0-9] یعنی جستجوی ما همه حروف کوچک و بزرگ و اعداد را دربر می‌ گیرد.

علامت “” + “”

علامت جمع (+) که در انگلیسی Plus sign نیز گفته می شود، به عنوان یک Regular Expressions جایگزین یک یا چند کاراکتر قبل از خودش است. به عبارتی اگر داشتیم +abc یعنی نتیجه ما با هر رشته‌ ای که در ابتدایش کاراکترهای ab و در ادامه صفر یا یک کاراکتر c داشته باشد تطبیق می‌ یابد.

علامت “” { } “”

برای آشنایی با علامت آکولاد ({ })، که در انگلیسی Curly brackets گفته می شود، به دو مثال زیر توجه کنید:

  • {۱,۲} یعنی آخرین آیتمی که قبل از آکولاد آمده حداقل یکبار و حداکثر دوبار تکرار شود.
  • {۲} یعنی آخرین آیتمی که قبل از آکولاد آمده ۲ بار تکرار شود.

مثلا جواب {۱,۲} hello خواهد بود hello و hello و از طرفی جواب {۵}hello خواهد بود hellooooo.

آموزش طراحی سایت رایگان ما استفاده کنید. همچنین می توانید در دوره طراحی سایت مجتمع فنی آریا تهران شرکت کنید.

تست Regular Expressions

فراموش نکنید که اگر در بحث برنامه نویسی از regex استفاده می کنید، توصیه می‌کنیم RegEx ای را که تعریف کرده‌ اید اول امتحان کنید، تا دچار مشکل خاصی نشوید.

دو روش خیلی خوب برای تست regex وجود دارد:

  • با استفاده از وب سایت ها و ابزارهای آنلاین آزمایش RegEx مثل regex101.com و سایت های مشابه.
  • با استفاده از فیلترهای جداول (Table filters)

سوالات متداول

regex چیست؟

regex یا Regular Expressions در فارسی به عبارات باقاعده یا عبارت‌ های منظم معنی شده که اصطلاحا regexp هم گفته می‌ شود. این عبارت‌ ها در واقع یک سری متون معمولی هستند که توسط پردازشگر های عبارات های با قاعده ارزشمند شده و برای جستجو، یافتن و مطابقت یک یا چند الگوی جستجوی خاص مورد استفاده قرار می‌ گیرند.

برای یادگیری و آموزش regex چه کنیم؟

نیاز به هیچ کار خاصی نیست، فقط باید دستورات کلی regular expressions را حفظ کنید.

regular expressions چه کاربردی دارد؟

regular expressions بیشتر برای جستوی متن در زبان های برنامه نویسی مختلف استفاده می شود.