امروز : ۲۰ اردیبهشت ۱۴۰۴ (2025/05/10)

چطور از متاکاراکترها در رجکس (regex) جنگو استفاده کنیم؟

چطور از متاکاراکترها در رجکس (regex) جنگو استفاده کنیم؟
20 اردیبهشت 1404

استفاده از متاکاراکترها  در رجکس  جنگو

در جنگو می توانیم با استفاده از re_path  و عبارات قاعده مند یا رجکس، لینک ها و اسلاگ های سفارشی ایجاد کنیم.  نمونه استفاده کاربردی رجکس و  re_pathc  استفاده از اسلاگ فارسی در جنگو است که در پست دیگری در پارس وب سرور به این موضوع پرداختیم .

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

بررسی متاکاراکترها در رجکس جنگو

در ادامه به معرفی و کاربرد هر کدام از این کاراکترهای  مورد استفاده در رجکس  می‌پردازیم:

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

در ادامه این  پست به مهم‌ترین علامت‌های مورد استفاده در Regex می‌پردازیم  و توضیح عملکرد هر کدام را به صورت خلاصه توضیح می دهیم:

1. `^` (Caret)
نشان‌دهنده شروع رشته است.


^hello

تطبیق رشته‌هایی که با `hello` شروع می‌شوند.
مثال: `hello world`  تطبیق می‌دهد ، `world hello` تطبیق نمی‌دهد .

 

2. `$` (Dollar)
نشان‌دهنده پایان رشته است.


world$

تطبیق رشته‌هایی که با `world` تمام می‌شوند.
مثال: `hello world`  تطبیق می‌دهد ، `world hello`  تطبیق نمی‌دهد .

 

3. `.` (Dot)
مطابقت با هر کاراکتری به جز خط جدید.


h.llo

مطابقت با `hello`, `hallo`, `hxllo`.
مثال: `hello` تطبیق می‌دهد، `hlo` تطبیق نمی‌دهد.

 

4. `*` (Asterisk)
تطبیق صفر یا بیشتر از کاراکتر قبلی.


ab*c

مطابقت با `ac`, `abc`, `abbc`, `abbbc`.
مثال : `ac` تطبیق می‌دهد، `abcd` تطبیق نمی‌دهد.

 

5. `+` (Plus)
تطبیق یک یا بیشتر از کاراکتر قبلی.


ab+c

مطابقت با `abc`, `abbc`, `abbbc`.
مثال : `ac` تطبیق نمی‌دهد.

 

6. `?` (Question Mark)
تطبیق صفر یا یک بار از کاراکتر قبلی (اختیاری بودن).


colou?r

مطابقت با `color` و `colour`.
مثال : `color` تطبیق می‌دهد، `colouur` تطبیق نمی‌دهد.

 

7. `[]` (Brackets)
مشخص کردن مجموعه‌ای از کاراکترها برای تطبیق.


[aeiou]

تطبیق با هر یک از حروف صدادار.
مثال  : `apple` حرف `a` تطبیق می‌دهد، `sky` تطبیق نمی‌دهد.

 

8. `[^]` (Negation Brackets)
تطبیق با هر کاراکتری به جز کاراکترهای مشخص‌شده.


[^aeiou]

مطابقت با هر کاراکتری به جز حروف صدادار.
مثال : `sky` تطبیق می‌دهد.

 

9. `{}` (Curly Braces)
مشخص کردن تعداد تکرار.


  a{2,4}

مطابقت با `aa`, `aaa`, یا `aaaa`.
مثال  : `a` تطبیق نمی‌دهد، `aaa` تطبیق می‌دهد.

 

10. `|` (Pipe)
عملگر “یا” (OR).


  cat|dog

مطابقت با `cat` یا `dog`.
مثال  : `cat` تطبیق می‌دهد، `bird` تطبیق نمی‌دهد.

 

11. `()` (Parentheses)
گروه‌بندی و اولویت‌بندی الگوها.


(ab)+

مطابقت با `ab`, `abab`, `ababab`.
مثال  : `ab` تطبیق می‌دهد، `a` تطبیق نمی‌دهد.

 

12. `\` (Backslash)
برای فرار دادن متاکاراکترها یا تطبیق کاراکترهای خاص.


  \.

مطابقت با نقطه (`.`).
مثال  : `file.txt` تطبیق می‌دهد.

 

13. `\d`
تطبیق با هر رقم (۰-۹).


  \d+

مطابقت با `123`, `4567`.
مثال : `abc123` تطبیق می‌دهد.

 

14. `\D`
تطبیق با هر کاراکتری که رقم نباشد.


  \D+

مطابقت با `abc`, `hello`.
مثال : `123` تطبیق نمی‌دهد.

 

15. `\w`
تطبیق با حروف، اعداد و آندرلاین `a-z`, `A-Z`, `0-9`, `_`.


  \w+

مطابقت با `hello_world123`.
مثال : `hello` تطبیق می‌دهد.

 

16. `\W`
تطبیق با هر چیزی به جز حروف، اعداد و آندرلاین.


  \W+

مطابقت با `!@#`, ` `.
مثال  : `abc` تطبیق نمی‌دهد.

 

17. `\s`
تطبیق با هر نوع فضای خالی space, tab, newline.


  \s+

مطابقت با فاصله‌ها.
مثال  : `hello world` تطبیق می‌دهد.

 

18. `\S`
تطبیق با هر چیزی به جز فضای خالی.


  \S+

مطابقت با `hello`, `world`.
مثال  : ` ` تطبیق نمی‌دهد.

 

19. `(?P…)` (Named Groups)
تعریف گروه‌های نام‌گذاری‌شده برای استفاده در کد.


  (?P\d{4})

تطبیق با سال چهاررقمی و ذخیره آن با نام `year`.
مثال : `/year/2025/`.

CharactersExplanation
aIt Matches exactly one character a.
abMatches the string ab.
a|bMatches a or b. If a is matched, b is left.
$Match the end of the string.
iIgnore case.
sMatches everything, including newline as well.
uMatches Unicode character classes.
xAllow spaces and comments (Verbose).
^Match the start of the string.
*Match 0 or more repetitions.
+Match one or more times.
?Match zero or one time.
{a,b}Match a to b times.
{a,}Match at least a time.
{,b}Match up to b times.
{a}Match exactly a times.
{a,b}?Matches the expression to its left times, and ignores b.

و جدول کلاس های متاکارکتر که در رجکس می توان استفاده کرد

ClassExplanation
\dMatches digits from 0-9.
\DMatches any non-digits.
\wMatches alphanumeric characters including, a-z, A-Z, 0-9, and underscore(_).
\WMatches any character, not a Unicode word character.
\sMatches whitespace characters.
\SMatches non-whitespace characters.
\nMatches a newline character.
\tMatches tab character.
\bMatches empty string, only at the beginning or end of a word.
\ZMatches the expression to its left at the absolute end of a string, whether in single or multi-line mode.
\AMatches the expression to its right at the absolute start of a string, whether in single or multi-line mode.

برای بررسی بیشتر می‌توان از ابزارهایی مثل regex101.com برای تست الگوها استفاده کرد.

 

استفاده از رجکس در تعریف url های داینامیک در جنگو

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

از اینکه در این پست با ما همراه بودید سپاسگزاریم.

5/5 - (6 امتیاز)