پارس وب سرور

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

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

در جنگو می توانیم با استفاده از 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/`.

Characters Explanation
a It Matches exactly one character a.
ab Matches the string ab.
a|b Matches a or b. If a is matched, b is left.
$ Match the end of the string.
i Ignore case.
s Matches everything, including newline as well.
u Matches Unicode character classes.
x Allow 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.

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

Class Explanation
\d Matches digits from 0-9.
\D Matches any non-digits.
\w Matches alphanumeric characters including, a-z, A-Z, 0-9, and underscore(_).
\W Matches any character, not a Unicode word character.
\s Matches whitespace characters.
\S Matches non-whitespace characters.
\n Matches a newline character.
\t Matches tab character.
\b Matches empty string, only at the beginning or end of a word.
\Z Matches the expression to its left at the absolute end of a string, whether in single or multi-line mode.
\A Matches the expression to its right at the absolute start of a string, whether in single or multi-line mode.

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

 

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

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

5/5 - (6 امتیاز)
خروج از نسخه موبایل