رجکس چیست؟



به زبان‌های دیگر بخوانید

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

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

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


رجکس بالا عبارت های مانند john_doe, jo-hn_doe, john12_ را می‌تواند بگیرد. همچین عبارت مانند Jo را نمی‌گیرد اول از همه چون با حروف بزرگ است دومن رشته‌ی بسیار کوتاه است.

جکس بالا عبارت های مانند john_doe, jo-hn_doe, john12_ را می‌تواند بگیرد. همچین عبارت مانند Jo را نمی‌گیرد اول از همه چون با حروف بزرگ است دومن رشته‌ی بسیار کوتاه است.

فهرست مطالب

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

مشابه‌ها

در اصل رجکس‌ها مجموعه‌ای از کاراکترهایی هستند که برای جستجو استفاده می شود. برای مثال کلمه the از حروف t، h و e تشکیل می شود.

"the" => The fat cat sat on the mat.
s

رجکس را اجرا کن

متاکاراکتر


متاکاراکتر بلوک‌هایی هستند که رجکس را تشکیل می دهند. متاکاراکتر به تنهایی معنایی ندارند. در عوض انان تفسیر می‌شوند تا گروهی خاصی از کاراکترها را بشناسند. برخی از متاکاراکترها دارای نمادی خاصی هستند داخل علامت [] نوشته می‌شوند.

انواع متاکارکترها:


نقطه

نقطه ساده‌ترین متاکاراکتر است. تمامی کاراکترهای جدا را پیدا می‌کند. نقطه خط‌های درهم شکسته را پیدا نمی کند.به عنوان مثال حروف ar یعنی هر کاراکتری که بعدش حروف a وr باشند.

".ar" => The car parked in the garage.

رجکس را اجرا کن

مجموعه‌ کارکترها

مجموعه‌ی از کاراکترها به نام کلاس کاراکترها خوانده می‌شود. برای مشخص کردن کلاسی از کاراکترها باید انان را در داخل علامت [] بگذاریم. ترتیب کاراکترها در براکت مهم نیست. برای مثال کلمه Tt]he] جروف تی‌ بزرگ و تی کوچک بعد ان هم h و e را به همراه دارد.پس حروف Tt]he] را پیدا می‌کند

"[Tt]he" => The car parked in the garage.

رجکس را اجرا کن

نماد نقطه در در مجموعه از کاراکترها، کاراکتر نقطه را مشخص می‌کند. پس عبارت [.]ar بدان معنی است که حروف کوچیک آ را نمایش می‌هد بعد به دنبال ان r و پس از ان کاراکتر . را نمایش می‌دهد. پس حروف .ar را پیدا می کند.

"ar[.]" => A garage is a good place to park a car.

رجکس را اجرا کن

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

نادیده‌گرفتن کاراکترها

علامت ^ بدان معنی است که خط شروع شده است. ولی وقتی ان را پس از باز کردن براکت می‌نویسید مفهوم دیگررا می‌رساند. پس تمامی کاراکترهای که در براکت نوشته شده است نادیده گرفته می‌شود.

برای مثال عبارت

[^c]ar

بدان معنی است که تمامی کاراکترها را پیداکن به جزء کاراکتر `c`

"[^c]ar" => The car parked in the garage.

رجکس را اجرا کن

تکرارها

علامت‌های *، + و ? برای نشان دادن این است که چند بار کلاس‌ها تکرار شوند. این رجکس‌ها بستگی به شرایط ممکن متفاوت عمل کنند.

علامت ستاره

علامت ستاره نشان تعداد تکرار دفعات است (صفر یا بیشتر). عبارت *a بدان معنی است آ و هر کاراکتری که بود. پس بعد از کاراکتر آ هر کاراکتر ممکن است ظاهر شود.برای مثال : پیدا کردن تعداد تکرار مجموعه‌ی تمامی کاراکترها، باید به این روش عمل کنیم

[a-z]*

تعداد تمامی حروف کوچیک در هر خط

"[a-z]*" => The car parked in the garage #21.

رجکس را اجرا کن