برای آنالیز کردن وب‌سایت، شما به بررسی اطلاعات نیاز دارید، اما آیا برای بررسی سایت به تمام اطلاعات نیاز دارید؟ البته که نه! آموزش ریجکس Regex یک راه هموار، به روی شما باز می‌کند. شما یاد می‌گیرید چطور با چند خط از عبارات با قاعده منظم یا همان ریجکس گزارش‌هایی از تمام اطلاعات استخراج کنید.

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

حالا وقت آن رسیده که با هم یاد بگیریم، چگونه ریجکسی بنویسیم؟ مراحل آموزش را بخوانید و از اولین مرحله آموزش نوشتن عبارات با قاعده منظم یا Regular Expressions شروع کنید.

ریجکس Regex چیست؟

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

در سایت ریجکس 101 میتوانید به صورت آنلاین و لایو این موارد را تست و تمرین بفرمایید.

Regex is a sequence of characters that defines a pattern to search for in text. You can use it to search for specific characters, words, or patterns in a text file, database, or web page. For example, you could use regular expressions to extract all email addresses from a text file, or to find and replace all instances of a misspelled word in a document

رجکس regex چیست؟

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

کاربرد Regular Expression یا Regex چیست؟

ریجکس در سرچ کنسول و آنالیتیکس کاربرد بسیاری دارد. این دو ابزار دنیایی از اطلاعات هستند، اما اینکه شما چطور و با چه الگویی این اطلاعات را جمع آوری می کنید، به آموزه‌ها و البته تجربه کار با عبارات با قاعده regex بستگی دارد. در قدم اول باید بدانید که کجای ابزار آنالیتیکس و سرچ کنسول امکان نوشتن عبارات با قاعده و منظم Regex را به شما می‌دهد؟

ریجکس چند کاربرد کلی دارد:

  • جستجو عبارت‌ها
  • جستجو و جایگزینی عبارت‌ها
  • استخراج اطلاعات با ارزش

کاربرد عبارات با قاعده ریجکس در سرچ کنسول

کاربرد ریجکس Regex در سرچ کنسول چیست؟ و چطور می‌توان از عبارات منظم در بهبود سایت کمک گرفت؟ در این بخش به طور کامل به این پرسش‌ها پاسخ می‌دهیم. استفاده از regular expressions به شما کمک می کند تا وضعیت سایت و صفحات را از جنبه‌های مختلف ارزیابی کنید. ممکن است بخواهید تمام سرچ‌های ورودی را با کلمه یا عبارت خاصی ارزیابی کنید و یا اینکه ورودی سایت را با یک صفحه مورد بررسی قرار بدهید؛ در هر حال، Search Console این امکان را به شما می‌دهد.

در این بخش، Regex سرچ کنسول را آموزش می‌دهیم. پس بدون هیچ نگرانی با ما پیش بروید.

  1. وارد سرچ کنسول شوید: شما باید یک پروژه روی سرچ کنسول تعریف کرده باشید تا به سرچ کنسول دسترسی داشته باشید.
  2. در کادر سمت چپ روی Performance کلیک کنید تا پنجره آن باز شود.
  3. در پنجره‌ای که مشاهده می کنید، در قسمت بالا روی new+ کلیک کنید.
  4. یک نوار باز می‌شود.
  5. در نوار باز شده روی گزینه Query کلیک کنید.
  6. حالا باید با توجه به فیلتر انتخاب کنید که تصمیم به ساخت چه نوع کوئری دارید؟
  7. در بخش FILTER روی یک لیست کشویی مشاهده می‌کنید که عبارت query containing را نوشته است.
  8. لیست کشویی را باز کنید و سپس گزینه custom regex را انتخاب کنید.
  9. یک کادر برای شما باز می‌شود که می‌توانید کوئری خود را بنویسید.
کاربرد رجکس regex در سرچ کنسول چیست؟ و چطور می‌توان از عبارات منظم در بهبود سایت کمک گرفت؟ در این بخش به طور کامل به این پرسش‌ها پاسخ می‌دهیم.

کاربرد عبارات با قاعده ریجکس در آنالیتیکس

از عبارات با قاعده یا همان ریجکس در آنالیتیکس مانند سرچ کنسول یا وب مستر، برای گزارش گیری استفاده می‌کنیم. آنالیتیکس مهمترین ابزار گوگل است که هر نوع اطلاعاتی را به شما ارائه می‌دهد. روش استفاده از اطلاعات یک هنر است. شما با استفاده از کدها و دستورات ریجکسی، می‌توانید اطلاعات مفیدی را بدست آورید. در واقع این دستورات در Google Analytics  به شما کمک می‌کند تا با دید واقعی وب‌سایت خود را ارزیابی کنید. هر قدر اطلاعات شما دقیق‌تر و درست‌تر باشد، طراحی و پیاده‌سازی استراتژی‌ها راحت‌تر و قابل پیش‌بینی‌تر خواهد شد.

انواع ریجکس regex (عبارات با قاعده منظم)

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

مهارها – ^ و $ در ریجکس

هر کدام از علائم در ریجکس معنا و مفهوم متفاوتی دارند. در این بخش هر کدام را به صورت مجزا شرح دادیم:

علامت کارت Caret (^) در ریجکس regex

متا کاراکتر کارت Caret (^) در Regular Expression چه کاربردی دارد؟

مثال: یک سایت فروشگاهی را تصور کنید که می‌خواهید آمار آن را براساس تمام کلمه یا عباراتی که با قیمت شروع می‌شوند، در آورید. کوئری که به شما نشان دهد با چه عبارت‌هایی که با “قیمت” شروع می‌شوند روی سایت ورودی دارید؟

راه حل: برای این کار کافی است که کوئری زیر را بنویسید:

(^)قیمت

علامت دلار Dollar Sign ($) در ریجکس regex

علامت دلار Dollar Sign ($) در ریجکس regex کاربردی خلاف علامت ^ را دارد.

مثال: تصور کنید، برای آنالیز یک وب‌سایت به عبارت‌هایی که با “ارزان” ختم شدند، نیاز دارید. در این حالت چه کوئری باید بنویسید؟

راه‌حل: شما باید دستور زیر را در کادر کوئری درج کنید:

($)ارزان

سورها – * + ? و {} در ریجکس

هر کدام از سورها را به صورت مجزا توضیح دادیم که متوجه کاربرد آن در نوشتن ریجکسی بشوید:

علامت ستاره Asterisk (*) در ریجکس regex

این علامت برای تکرار چندباره یا صفرباره کاراکتر قبلی‌اش کاربرد دارد.

مثال: تصور کنید، در یک وب‌سایت فروش کتاب، تصمیم دارید کلماتی که با تکرار اشتباه حروف در سایت وجود دارد را پیدا کنید. چطور این کار را انجام می‌دهید؟

راه‌حل: عبارت boo*ks را قسمت کوئری بنویسید، بنابراین هر عبارتی که تکرار o را داشته باشد، برای شما نمایش داده می‌شود.

books,books,boks,….

انواع رجکس regex (عبارات با قاعده منظم)

علامت سوال Question Mark (?) در ریجکس regex

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

مثال: تصور کنید من یک شرکت تاسیس کردم و نام آن را “آیندگان” گذاشتم، حالا اگر دو شرکت آیندگان وجود داشته باشد و عده‌ای برای اینکه به شرکت من دسترسی پیدا کنند، عبارت پرویز آیندگان را سرچ کنند، من روی این عبارت ورودی دارم. می خوام از این موضوع مطمئن شوم که به ازای هر کلیک در گوگل آنالیتیکس چه جستجوهایی با اسم من انجام شده، حالا باید چه رجکسی را طراحی کنم؟

راه‌حل: باید اسم خودم را در کنار علامت $ بگذارم.

علامت خط تیره Dashes (-) در رجکس regex

این علامت در نوشتن RegEx به معنای تعیین یک محدوده است.

مثال: شما می‌خواهید هر عبارتی که با عدد 1398 تا 1402  را جمع آوری کنید و تمام عبارات‌هایی که حاوی این مقدار هستند را اصلاح کنید. راه حل چه خواهد بود؟

راه‌حل: با کمک گرفتن از [] و – می‌توانید تمام عبارت‌ها را جمع آوری کنید. کافی است به شکل زیر بنویسید:

]1398-1402[ یعنی همه عبارت‌هایی در سایت که اعدادی در بازه 1398 تا 1402 را دارد به من نشان بده.

علامت آکولاد Curly brackets ({ }) در رجکس Regex

یاد گرفتن این علامت خیلی ساده است. تعداد تکرار کاراکتر مورد نظر را داخل آکولاد می نویسید. به مثال زیر توجه کنید:

مثال: {2} یعنی آخرین کاراکتر قبل از آکولاد، 2 بار تکرار شود.

مثال: {4,5} یعنی آخرین کاراکتر قبل از آکولاد، حداقل 4 بار و حداکثر 5 بار تکرار شود.

مثال: {4,8} یعنی آخری کاراکتر قبل از آکولاد، حداقل 4 بار و حداکثر 8 بار تکرار شود.

علامت جمع (+) در ریجکس regex

این علامت در رجکس خیلی پرکاربرد نیست اما دانستن آن هم بد نیست! با این علامت می‌توانید یک یا چند کاراکتر قبل را که تکرار شده را پیدا کنید. به مثال ساده زیر توجه کنید:

مثال: regex+ با این دستور شما می‌توانید عباراتی مانند regexx – regex – regexxxx را مشاهده کنید.

انواع رجکس یا Regex

عملگر OR – |  یا [] در رجکس

عملگرها هم در زبان برنامه نویسی و هم در نوشتن کوئری معنا و مفهوم دارد، در زیر به هر کدام اشاره می کنیم:

عملگر (|) پایپ در ریجکس Regex

عملگر (|) پایپ در رجکس regex یعنی “یا” ، برای درک بهتر به مثال زیر توجه کنید:

مثال: اگر بخواهید عبارت نخ بخیه یا نخ جراحی را وب‌سایت جستجو کنید، باید چطور عمل کرد؟ آیا درست است که، تمام سایت را پرس و جو کنید و این عبارت را پیدا کنید؟

راه‌حل: خیر، با کمک علامت پایپ می‌توان تمام عبارت‌هایی که کلمه نخ بخیه یا نخ جراح وجود دارد را جمع آوری کنید. برای این کار دستور زیر را بنوسید:

نخ جراحی | نخ بخیه

علامت کروشه Square Brackets ([])

این علامت برای اینکه بتوانید لیست در کوئری ایجاد کنید، مناسب است. این علامت به شکل زیر کاربرد دارد:

مثال: t[iao]p تمام عبارت‌هایی که شامل top – tip – tap باشند را به شما نشان می‌دهد.

دسته‌های کاراکتر – d \w \s\  و . در ریجکس

درک دقیق و درست کاراکترها، به شما در نوشتن کوئری کمک می‌کند، در زیر به هرکدام اشاره می‌کنیم و با یک مثال توضیح می‌دهیم:

. دات (Dot) در ریجکس Regex

کاراکتر . دات (Dot) در Regular Expression کاربرد زیادی دارد.

مثال: “خرید کتانی نایک” که برخی به صورت “خرید کتونی نایک” سرچ می‌کنند را در نظر داشته باشید. طبیعتا کار دشواری است که شما هر کدام از صفحاتی که خرید کتونی / کتانی نایک سرچ می‌شود را پیدا کنید. حتی ممکن است برخی “خرید کتانی/کتونی نایک” یا خرید کتانی/کتونی نایکی” سرچ کنند. حالا آنالیز میزان سرچ ورودی کار سخت‌تری شد. پس چه باید کرد؟

راه حل: یک کوئری بنویسید به صورت زیر:

خرید کت.نی نایک.

چگونه ریجکس طراحی کنیم؟

مثال: تصور کنید که نمی‌دانید کلمه کلید یا عبارت کلیدی شما به چه صورت نوشته می‌شود؟ به عنوان مثال کلمه کلیدی شما “تصویه مالیات” است. شما حدس می‌زنید که شاید کاربران شما “تسویه مالیات” هم سرچ کنند. حالا چطور باید کاربران را آنالیز کنید؟

راه حل: تنها کافی است با . و [] یک کوئری به صورت زیر بنویسید:

ت]س ص[ویه مالیات

کاراکتر \s در رجکس چه کاربردی دارد؟

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

کاراکتر \w در رجکس چه کاربردی دارد؟

این دستور به شما هر کاراکتری را که کلمه نباشد نشان می‌دهد. به تنهایی این دستور کاربردهای زیادی ندارد اما در دستورنویسی‌های پیچیده می‌توانید از آن استفاده کنید.

کاراکتر \d در ریجکس چه کاربردی دارد؟

هر کاراکتری که عدد نباشد را به شما نشان می‌دهد. با بک اسلش D می‌توانید این دستور را بنویسید که ما پیشنهاد می‌کنیم در دستورات پیچیده از آن استفاده کنید.

فلگ ها در ریجکس

فلگ‌ها سری حروف‌هایی هستند که نقش بسیار مهمی را در نوشتن کوئری ایفا می‌کنند. فلگ‌هایی مانند i و g که به ترتیب گرفته شده از کلمه insensitive و global هستند، در نوشتن ریجکس کاربرد زیادی دارند. به مثال‌های زیر توجه کنید:

مثال:

Var regex= /shayan/i

در این مثال بیان می‌کنید که کلمه shayan در هرجای سایت وجود داشت، فارغ از بزرگ و کوچکی حروف را نمایش دهد.

مثال:

Var regex= /shayan/ig

در این مثال بیان می‌کند که کلمه مورد نظر فارغ از بزرگ و کوچکی و با در نظر گرفتن تکرار نمایش داده شود.

گروه ‌بندی و capture – () در ریجکس

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

عبارت‌های براکت – [] در ریجکس

عبارت‌ها در براکت می‌توانند یک بازه باشند. به بیان دیگر شما می‌توانید از حروف A تا Z را با استفاده از این دستور بدست آورید.

عبارت‌های براکت – [] در رجکس

تطبیق Greedy و Lazy در رجکس

Greedy عملگرهای حریص هستند که تا آنجایی که بشود امکان گسترش روی متن را دارد. Lazy نقطه مقابل است که برای عملگر تنبل از آن استفاده می‌شود. برای اینکه فقط عبارت داخل <> را تطبیق دهد، از علامت سوال ؟ استفاده می‌شود تا greedy به lazy تغییر کند.

کران ها – b\ و B\ در رجکس

نتیجه‌ای که نمایش داده می‌شود، بیان می‌کند که موقعیت‌هایی تطبیق پیدا می‌کند که یک طرف کلمه باشد و طرف دیگر کلمه نباشد. برای حالت نفی آن از \B استفاده می‌کنیم.

1\ در ریجکس

تنها در صورتی که تطبیق ایجاد شود، از این الگو استفاده می‌کند. به مثال زیر توجه کنید:

([abc])\1

این مثال بیان می‌کند که نتیجه با متنی که در گروه نخست capture است مطابقت یافته است. به جای عدد 1 اگر عدد 2 باشد، بیان می‌کند که نتیجه با متنی که در گروه دوم capture است، مطابقت دارد.

گشتن در سمت جلو و عقب (=?) و (=>?) در رجکس

هر عبارتی که پیدا می‌شود، تنها در حالتی تطبیق یافته که یا در ادامه کاراکتر مورد نظر آمده باشد و یا اینکه قبل از آن کاراکتر مورد نظر آمده باشد.

مثال:

d(?=r)

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

مثال:

(?<=r)d

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

کاربرد فیلترهای جداول Table filters)) در رجکس

با استفاده از فیلترهای جداول (Table filters) می‌توانید متوجه شوید که نتیجه مورد نظر خود را دریافت کردید یا خیر؟ بنابراین جداول را در عبارت‌های با قاعده منظم جدی بگیرید. با کمی دقت و قدرت تفسیر رجکس‌ها می‌توانید بهره‌وری بالایی داشته باشید.

اگر تصمیم دارید به دنیای سئو تکنیکال ورود کنید، مطالعه فایل robots.txt چیست را پیشنهاد می‌کنیم.

چگونه ریجکس طراحی کنیم؟

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

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

001\d{8}

حالا لیستی از نتایج به شما ارائه می‌شود از اشخاصی که کد ملی خود را به درستی وارد کردند و البته تهرانی هستند.

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

5\d

کاربرد تستر‌ها یا آزمایشگرهای Regular Expressions

در برنامه نویسی و نوشتن کدها ریجکسی آن چیزی که به شما در دریافت کوئری مورد نظر کمک می‌کند، تست و امتحان ریجکسی تعریف شده است. به دو روش می‌توانید، رجکسی خود را تعریف کنید:

  • ابزارهای آنلاین
  • فیلتر جداول

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

مثال: اعتبارسنجی نام کاربری

تصور کنید در چند خط از دستور ریجکسی تصمیم داریم، امکان ثبت نام کاربری را برای کاربران محدود کنیم. شرایط زیر را مد نظر داشته باشید:

  • تنها در آخر کاراکتر می‌تواند عدد بگذارد.
  • در کاراکترها امکان حروف بزرگ و کوچک وجود دارد.
  • تعداد کاراکترها می‌تواند حداکثر 8 تا باشد.

var string = “sahand5”;

var regex = /^[a-zA-z]{8,}\d*$/;

string.match(regex);

مثال: اعتبار سنجی انواع آدرس سایت

می‌خواهیم رجکسی را بنویسیم که با ساختار url سازگار باشد.

var string = “https://sokanacademy.com”;

var regex = /http[s]*:\/\/[www\.]*\w+\.\w{3}/;

string.match(regex);

در سایت github.com گوگل به شرح کامل آن پرداخته که پرکاربردهای به شرح زیر است:

Regular expressions are a notation for describing sets of character strings. When a particular string is in the set described by a regular expression, we often say that the regular expression matches the string.

The simplest regular expression is a single literal character. Except for the metacharacters like *+?()|, characters match themselves. To match a metacharacter, escape it with a backslash: \+ matches a literal plus character.

Two regular expressions can be alternated or concatenated to form a new regular expression: if e1 matches s and e2 matches t, then e1|e2 matches s or t, and e1e2 matches st.

The metacharacters *+, and ? are repetition operators: e1* matches a sequence of zero or more (possibly different) strings, each of which match e1e1+ matches one or more; e1? matches zero or one.

The operator precedence, from weakest to strongest binding, is first alternation, then concatenation, and finally the repetition operators. Explicit parentheses can be used to force different meanings, just as in arithmetic expressions. Some examples: ab|cd is equivalent to (ab)|(cd)ab* is equivalent to a(b*).

The syntax described so far is most of the traditional Unix egrep regular expression syntax. This subset suffices to describe all regular languages: loosely speaking, a regular language is a set of strings that can be matched in a single pass through the text using only a fixed amount of memory. Newer regular expression facilities (notably Perl and those that have copied it) have added many new operators and escape sequences, which make the regular expressions more concise, and sometimes more cryptic, but usually not more powerful.

It also lists some syntax accepted by PCRE, PERL, and VIM.

kinds of single-character expressionsexamples
any character, possibly including newline (s=true).
character class[xyz]
negated character class[^xyz]
Perl character class (link)\d
negated Perl character class\D
ASCII character class (link)[[:alpha:]]
negated ASCII character class[[:^alpha:]]
Unicode character class (one-letter name)\pN
Unicode character class\p{Greek}
negated Unicode character class (one-letter name)\PN
negated Unicode character class\P{Greek}
Composites
xyx followed by y
x|yx or y (prefer x)
Repetitions
x*zero or more x, prefer more
x+one or more x, prefer more
x?zero or one x, prefer one
x{n,m}n or n+1 or … or m x, prefer more
x{n,}n or more x, prefer more
x{n}exactly n x
x*?zero or more x, prefer fewer
x+?one or more x, prefer fewer
x??zero or one x, prefer zero
x{n,m}?n or n+1 or … or m x, prefer fewer
x{n,}?n or more x, prefer fewer
x{n}?exactly n x
x{}(≡ x*) (NOT SUPPORTED) VIM
x{-}(≡ x*?) (NOT SUPPORTED) VIM
x{-n}(≡ x{n}?) (NOT SUPPORTED) VIM
x=(≡ x?) (NOT SUPPORTED) VIM

Implementation restriction: The counting forms x{n,m}x{n,}, and x{n} reject forms that create a minimum or maximum repetition count above 1000. Unlimited repetitions are not subject to this restriction.

Possessive repetitions
x*+zero or more x, possessive (NOT SUPPORTED)
x++one or more x, possessive (NOT SUPPORTED)
x?+zero or one x, possessive (NOT SUPPORTED)
x{n,m}+n or … or m x, possessive (NOT SUPPORTED)
x{n,}+n or more x, possessive (NOT SUPPORTED)
x{n}+exactly n x, possessive (NOT SUPPORTED)
Grouping
(re)numbered capturing group (submatch)
(?P<name>re)named & numbered capturing group (submatch)
(?<name>re)named & numbered capturing group (submatch)
(?'name're)named & numbered capturing group (submatch) (NOT SUPPORTED)
(?:re)non-capturing group
(?flags)set flags within current group; non-capturing
(?flags:re)set flags during re; non-capturing
(?#text)comment (NOT SUPPORTED)
(?|x|y|z)branch numbering reset (NOT SUPPORTED)
(?>re)possessive match of re (NOT SUPPORTED)
re@>possessive match of re (NOT SUPPORTED) VIM
%(re)non-capturing group (NOT SUPPORTED) VIM
Flags
icase-insensitive (default false)
mmulti-line mode: ^ and $ match begin/end line in addition to begin/end text (default false)
slet . match \n (default false)
Uungreedy: swap meaning of x* and x*?x+ and x+?, etc (default false)

Flag syntax is xyz (set) or -xyz (clear) or xy-z (set xy, clear z).

Empty strings
^at beginning of text or line (m=true)
$at end of text (like \z not \Z) or line (m=true)
\Aat beginning of text
\bat ASCII word boundary (\w on one side and \W\A, or \z on the other)
\Bnot at ASCII word boundary
\gat beginning of subtext being searched (NOT SUPPORTED) PCRE
\Gat end of last match (NOT SUPPORTED) PERL
\Zat end of text, or before newline at end of text (NOT SUPPORTED)
\zat end of text
(?=re)before text matching re (NOT SUPPORTED)
(?!re)before text not matching re (NOT SUPPORTED)
(?<=re)after text matching re (NOT SUPPORTED)
(?<!re)after text not matching re (NOT SUPPORTED)
re&before text matching re (NOT SUPPORTED) VIM
re@=before text matching re (NOT SUPPORTED) VIM
re@!before text not matching re (NOT SUPPORTED) VIM
re@<=after text matching re (NOT SUPPORTED) VIM
re@<!after text not matching re (NOT SUPPORTED) VIM
\zssets start of match (= \K) (NOT SUPPORTED) VIM
\zesets end of match (NOT SUPPORTED) VIM
\%^beginning of file (NOT SUPPORTED) VIM
\%$end of file (NOT SUPPORTED) VIM
\%Von screen (NOT SUPPORTED) VIM
\%#cursor position (NOT SUPPORTED) VIM
\%'mmark m position (NOT SUPPORTED) VIM
\%23lin line 23 (NOT SUPPORTED) VIM
\%23cin column 23 (NOT SUPPORTED) VIM
\%23vin virtual column 23 (NOT SUPPORTED) VIM
Escape sequences
\abell (≡ \007)
\fform feed (≡ \014)
\thorizontal tab (≡ \011)
\nnewline (≡ \012)
\rcarriage return (≡ \015)
\vvertical tab character (≡ \013)
\*literal *, for any punctuation character *
\123octal character code (up to three digits)
\x7Fhex character code (exactly two digits)
\x{10FFFF}hex character code
\Cmatch a single byte even in UTF-8 mode
\Q...\Eliteral text ... even if ... has punctuation
\1backreference (NOT SUPPORTED)
\bbackspace (NOT SUPPORTED) (use \010)
\cKcontrol char ^K (NOT SUPPORTED) (use \001 etc)
\eescape (NOT SUPPORTED) (use \033)
\g1backreference (NOT SUPPORTED)
\g{1}backreference (NOT SUPPORTED)
\g{+1}backreference (NOT SUPPORTED)
\g{-1}backreference (NOT SUPPORTED)
\g{name}named backreference (NOT SUPPORTED)
\g<name>subroutine call (NOT SUPPORTED)
\g'name'subroutine call (NOT SUPPORTED)
\k<name>named backreference (NOT SUPPORTED)
\k'name'named backreference (NOT SUPPORTED)
\lXlowercase X (NOT SUPPORTED)
\uxuppercase x (NOT SUPPORTED)
\L...\Elowercase text ... (NOT SUPPORTED)
\Kreset beginning of $0 (NOT SUPPORTED)
\N{name}named Unicode character (NOT SUPPORTED)
\Rline break (NOT SUPPORTED)
\U...\Eupper case text ... (NOT SUPPORTED)
\Xextended Unicode sequence (NOT SUPPORTED)
\%d123decimal character 123 (NOT SUPPORTED) VIM
\%xFFhex character FF (NOT SUPPORTED) VIM
\%o123octal character 123 (NOT SUPPORTED) VIM
\%u1234Unicode character 0x1234 (NOT SUPPORTED) VIM
\%U12345678Unicode character 0x12345678 (NOT SUPPORTED) VIM
Character class elements
xsingle character
A-Zcharacter range (inclusive)
\dPerl character class
[:foo:]ASCII character class foo
\p{Foo}Unicode character class Foo
\pFUnicode character class F (one-letter name)
Named character classes as character class elements
[\d]digits (≡ \d)
[^\d]not digits (≡ \D)
[\D]not digits (≡ \D)
[^\D]not not digits (≡ \d)
[[:name:]]named ASCII class inside character class (≡ [:name:])
[^[:name:]]named ASCII class inside negated character class (≡ [:^name:])
[\p{Name}]named Unicode property inside character class (≡ \p{Name})
[^\p{Name}]named Unicode property inside negated character class (≡ \P{Name})
Perl character classes (all ASCII-only)
\ddigits (≡ [0-9])
\Dnot digits (≡ [^0-9])
\swhitespace (≡ [\t\n\f\r ])
\Snot whitespace (≡ [^\t\n\f\r ])
\wword characters (≡ [0-9A-Za-z_])
\Wnot word characters (≡ [^0-9A-Za-z_])
\hhorizontal space (NOT SUPPORTED)
\Hnot horizontal space (NOT SUPPORTED)
\vvertical space (NOT SUPPORTED)
\Vnot vertical space (NOT SUPPORTED)
ASCII character classes
[[:alnum:]]alphanumeric (≡ [0-9A-Za-z])
[[:alpha:]]alphabetic (≡ [A-Za-z])
[[:ascii:]]ASCII (≡ [\x00-\x7F])
[[:blank:]]blank (≡ [\t ])
[[:cntrl:]]control (≡ [\x00-\x1F\x7F])
[[:digit:]]digits (≡ [0-9])
[[:graph:]]graphical (≡ [!-~] ≡ [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])
[[:lower:]]lower case (≡ [a-z])
[[:print:]]printable (≡ [ -~] ≡ [ [:graph:]])
[[:punct:]]punctuation (≡ [!-/:-@[-`{-~])
[[:space:]]whitespace (≡ [\t\n\v\f\r ])
[[:upper:]]upper case (≡ [A-Z])
[[:word:]]word characters (≡ [0-9A-Za-z_])
[[:xdigit:]]hex digit (≡ [0-9A-Fa-f])

جمع بندی ریجکس یا Regex

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

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


چطور در سرچ کنسول ریجکس بنویسم؟

ابتدا سایت را به سرچ کنسول مرتبط کنید، سپس وارد قسمت performance شوید و روی علامت + کلیک کنید در کادر باز شده، با انتخاب Regex شروع به نوشتن رجکسی کنید.

چرا باید ریجکس یاد بگیریم؟

عبارات با قاعده منظم به شما کمک می‌کند تا با توجه به حجم زیاد اطلاعات، کوئری مورد نظر خود را دریافت کنید و باتوجه به آنچه بدست آوردید، شروع به طراحی و اصلاح استراتژی کنید.

آیا ریجکس در آنالیتیکس کاربرد دارد؟

بله، رجکس Regex هم در سرچ کنسول هم در آنالیتیکس کاربرد دارد.