کتابخانه‌ی استاندارد · متن

عبارت باقاعده regex

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

واردسازی عبارت باقاعده
در این صفحه
  1. گونه‌ها
  2. روال‌ها

عبارت باقاعده زبانی کوچک برای توصیف الگوی متن است؛ [0-9]+ یعنی «یک یا چند رقم». با آن می‌توانید بپرسید متنی با الگو جور است یا نه، همه‌ی جاهای جور را پیدا کنید، بخش‌هایی از آن را بیرون بکشید یا جایگزین کنید.

هر روال دو نسخه دارد. نسخه‌ای که عبارت باقاعده می‌گیرد با الگوی از پیش کامپایل‌شده کار می‌کند و برای استفاده‌ی تکراری سریع‌تر است. نسخه‌ای که نامش با «رشته» تمام می‌شود، الگو را به شکل متن می‌گیرد و هر بار کامپایلش می‌کند؛ برای کارهای یک‌باره راحت‌تر است.

پرانتز در الگو یک «گروه» می‌سازد و (?P<نام>...) گروهی نام‌دار. گروه صفر کل بخش جورشده است. در جایگزینی، $1 و $2 جای گروه‌ها را می‌گیرند.

گونه‌ها

نتیجه تطبیق MatchResult

ساختار نتیجه تطبیق
نتیجه‌ی یک جستجو. به‌جای خواندن مستقیم فیلدها، بیشتر وقت‌ها روال‌های «گروه» ساده‌ترند.
نامانگلیسیگونهتوضیح
okokمنطقی = نادرستاگر جوری پیدا شده باشد، درست است.
startstartصحیح = -1جای شروع بخش جورشده، بر حسب بایت.
stopstopصحیح = -1جای پایان بخش جورشده، بر حسب بایت (خود این جایگاه جزو آن نیست).
countcountصحیح = 0تعداد گروه‌ها، به‌جز گروه صفر.
texttextرشته = ""کل متنی که در آن جستجو شده؛ نه فقط بخش جورشده. بخش جورشده را با گروه(ت، ۰) بگیرید.
patternpatternرشته = ""الگویی که جستجو با آن انجام شده.
gsgsصحیح[]جای شروع هر گروه.
gegeصحیح[]جای پایان هر گروه.
regex-Group.salam
واردسازی عبارت باقاعده

روال ریشه:
    ع := عبارت باقاعده.کامپایل("(?P<year>[0-9]{4})-(?P<month>[0-9]{2})")
    ت := عبارت باقاعده.یافتن تطبیق(ع، "تاریخ: 2025-09")
    سرچاپ ت.ok، ت.start، ت.stop، ت.text
    سرچاپ عبارت باقاعده.تعداد گروه(ت)، عبارت باقاعده.گروه هست(ت، ۱)
    سرچاپ عبارت باقاعده.گروه(ت، ۰)، عبارت باقاعده.گروه(ت، ۱)، عبارت باقاعده.گروه(ت، ۲)
    سرچاپ عبارت باقاعده.شروع گروه(ت، ۲)، عبارت باقاعده.پایان گروه(ت، ۲)
    سرچاپ عبارت باقاعده.شماره گروه(ت، "month")، عبارت باقاعده.گروه با نام(ت، "year")
    ت۲ := عبارت باقاعده.یافتن تطبیق از(ع، "2024-01 و 2025-02"، ۵)
    سرچاپ عبارت باقاعده.گروه(ت۲، ۰)
    سرچاپ عبارت باقاعده.گروه(عبارت باقاعده.یافتن تطبیق رشته("b+"، "aabbbc")، ۰)
    سرچاپ عبارت باقاعده.یافتن زیرتطبیق(ع، "2025-09")
    سرچاپ عبارت باقاعده.یافتن زیرتطبیق رشته("(a)(b)"، "xab")
پایان
خروجیtrue 12 19 تاریخ: 2025-09 2 true 2025-09 2025 09 17 19 2 2025 2025-02 bbb ["2025-09", "2025", "09"] ["ab", "a", "b"]

عبارت باقاعده Regex

ساختار عبارت باقاعده
یک الگوی کامپایل‌شده. آن را با کامپایل بسازید و بارها به کار ببرید.
نامانگلیسیگونهتوضیح
patternpatternرشته = ""متن الگویی که کامپایل شده.
regex-Compile.salam
واردسازی عبارت باقاعده

روال ریشه:
    ع := عبارت باقاعده.کامپایل("[0-9]+")
    سرچاپ ع.pattern، عبارت باقاعده.معتبر است("[0-9]+")، عبارت باقاعده.معتبر است("[0-9")
    سرچاپ عبارت باقاعده.تطبیق(ع، "abc123")، عبارت باقاعده.یافتن(ع، "abc123")
    سرچاپ عبارت باقاعده.جایگزینی(ع، "a1 b22 c333"، "#")
    سرچاپ عبارت باقاعده.جایگزینی همه(ع، "a1 b22 c333"، "#")
    سرچاپ عبارت باقاعده.تطبیق رشته("^[a-z]+$"، "salam")، عبارت باقاعده.یافتن رشته("o"، "salam donya")
    سرچاپ عبارت باقاعده.جایگزینی رشته("a"، "banana"، "o")، عبارت باقاعده.جایگزینی همه رشته("a"، "banana"، "o")
پایان
خروجی[0-9]+ true false true 3 a# b22 c333 a# b# c# true 7 bonana bonono

روال‌ها

یافتن تطبیق FindMatch

روال یافتن تطبیق(re: عبارت باقاعده، text: رشته): نتیجه تطبیق
نخستین جای جور با الگو را پیدا می‌کند و همه‌ی جزئیاتش، از جمله گروه‌ها، را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

یافتن تطبیق رشته FindMatchStr

روال یافتن تطبیق رشته(pattern: رشته، text: رشته): نتیجه تطبیق
مثل یافتن تطبیق، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

یافتن تطبیق از FindMatchFrom

روال یافتن تطبیق از(re: عبارت باقاعده، text: رشته، from: صحیح): نتیجه تطبیق
مثل یافتن تطبیق، ولی جستجو را از بایت from شروع می‌کند؛ برای پیدا کردن مورد بعدی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

تعداد گروه GroupCount

روال تعداد گروه(m: نتیجه تطبیق): صحیح
تعداد گروه‌های الگو را برمی‌گرداند، به‌جز گروه صفر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

گروه هست GroupOk

روال گروه هست(m: نتیجه تطبیق، i: صحیح): منطقی
اگر گروه شماره‌ی i در این جور شرکت کرده باشد، درست برمی‌گرداند. گروه‌های اختیاری ممکن است خالی بمانند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

گروه Group

روال گروه(m: نتیجه تطبیق، i: صحیح): رشته
متن گروه شماره‌ی i را برمی‌گرداند؛ گروه صفر کل بخش جورشده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

شروع گروه GroupStart

روال شروع گروه(m: نتیجه تطبیق، i: صحیح): صحیح
جای شروع گروه، بر حسب بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

پایان گروه GroupEnd

روال پایان گروه(m: نتیجه تطبیق، i: صحیح): صحیح
جای پایان گروه، بر حسب بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

شماره گروه GroupIndex

روال شماره گروه(m: نتیجه تطبیق، name: رشته): صحیح
شماره‌ی یک گروه نام‌دار را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

گروه با نام GroupByName

روال گروه با نام(m: نتیجه تطبیق، name: رشته): رشته
متن یک گروه نام‌دار را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

یافتن زیرتطبیق FindSubmatch

روال یافتن زیرتطبیق(re: عبارت باقاعده، text: رشته): وکتور<رشته>
متن جورشده و همه‌ی گروه‌هایش را در یک وکتور برمی‌گرداند؛ عضو صفر کل بخش جورشده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

یافتن زیرتطبیق رشته FindSubmatchStr

روال یافتن زیرتطبیق رشته(pattern: رشته، text: رشته): وکتور<رشته>
مثل یافتن زیرتطبیق، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Group.salam

یافتن همه تطبیق ها FindAllMatches

روال یافتن همه تطبیق ها(re: عبارت باقاعده، text: رشته، limit: صحیح): وکتور<نتیجه تطبیق>
همه‌ی جاهای جور را، با جزئیات، برمی‌گرداند. limit منفی یعنی بدون محدودیت.
regex-FindAll.salam
واردسازی عبارت باقاعده

روال ریشه:
    ع := عبارت باقاعده.کامپایل("[0-9]+")
    متن := "سال 1403، ماه 7، روز 12"
    سرچاپ عبارت باقاعده.یافتن همه(ع، متن)
    سرچاپ عبارت باقاعده.یافتن چند(ع، متن، ۲)
    سرچاپ عبارت باقاعده.یافتن همه رشته("[a-z]+"، "one two three")
    سرچاپ عبارت باقاعده.تفکیک کردن(عبارت باقاعده.کامپایل(" *, *")، "a , b,c ,  d")
    سرچاپ عبارت باقاعده.تفکیک کردن چند(عبارت باقاعده.کامپایل(",")، "a,b,c,d"، ۲)
    سرچاپ عبارت باقاعده.تفکیک کردن رشته("-+"، "2025--09---29")
    همه := عبارت باقاعده.یافتن همه تطبیق ها(ع، متن، -۱)
    هر ت در همه:
        سرچاپ عبارت باقاعده.گروه(ت، ۰)، ت.start، ت.stop
    پایان
پایان
خروجی["1403", "7", "12"] ["1403", "7"] ["one", "two", "three"] ["a", "b", "c", "d"] ["a", "b,c,d"] ["2025", "09", "29"] 1403 7 11 7 21 22 12 32 34

یافتن چند FindAllN

روال یافتن چند(re: عبارت باقاعده، text: رشته، limit: صحیح): وکتور<رشته>
متن حداکثر limit مورد جور را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

یافتن همه FindAll

روال یافتن همه(re: عبارت باقاعده، text: رشته): وکتور<رشته>
متن همه‌ی موارد جور را در یک وکتور برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

یافتن همه رشته FindAllStr

روال یافتن همه رشته(pattern: رشته، text: رشته): وکتور<رشته>
مثل یافتن همه، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

تفکیک کردن چند SplitN

روال تفکیک کردن چند(re: عبارت باقاعده، text: رشته، limit: صحیح): وکتور<رشته>
متن را هر جا با الگو جور شود می‌شکند، ولی حداکثر به limit تکه؛ تکه‌ی آخر بقیه‌ی متن است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

تفکیک کردن Split

روال تفکیک کردن(re: عبارت باقاعده، text: رشته): وکتور<رشته>
متن را هر جا با الگو جور شود می‌شکند. برای جداکننده‌هایی که فاصله‌ی دورشان متغیر است، از رشته.تفکیک کردن انعطاف‌پذیرتر است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

تفکیک کردن رشته SplitStr

روال تفکیک کردن رشته(pattern: رشته، text: رشته): وکتور<رشته>
مثل تفکیک کردن، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-FindAll.salam

بسط Expand

روال بسط(m: نتیجه تطبیق، template: رشته): رشته
یک قالب را با گروه‌های یک نتیجه پر می‌کند؛ $1، $2 و… جای گروه‌ها را می‌گیرند.
regex-Expand.salam
واردسازی عبارت باقاعده

روال ریشه:
    ع := عبارت باقاعده.کامپایل("([a-z]+)@([a-z]+)")
    متن := "ali@home, sara@work"
    ت := عبارت باقاعده.یافتن تطبیق(ع، متن)
    سرچاپ عبارت باقاعده.بسط(ت، "$2 <- $1")
    سرچاپ عبارت باقاعده.جایگزینی با بسط(ع، متن، "$2:$1")
    سرچاپ عبارت باقاعده.جایگزینی همه با بسط(ع، متن، "$2:$1")
    سرچاپ عبارت باقاعده.جایگزینی با بسط رشته("(\\w+) (\\w+)"، "hello world"، "$2 $1")
    سرچاپ عبارت باقاعده.جایگزینی همه با بسط رشته("(a)(b)"، "abab"، "$2$1")
پایان
خروجیhome <- ali home:ali, sara@work home:ali, work:sara world hello baba

جایگزینی با بسط ReplaceExpand

روال جایگزینی با بسط(re: عبارت باقاعده، text: رشته، template: رشته): رشته
نخستین مورد جور را با قالب جایگزین می‌کند؛ در قالب می‌توانید از $1 و… استفاده کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Expand.salam

جایگزینی همه با بسط ReplaceAllExpand

روال جایگزینی همه با بسط(re: عبارت باقاعده، text: رشته، template: رشته): رشته
همه‌ی موارد جور را با قالب جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Expand.salam

جایگزینی با بسط رشته ReplaceExpandStr

روال جایگزینی با بسط رشته(pattern: رشته، text: رشته، template: رشته): رشته
مثل جایگزینی با بسط، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Expand.salam

جایگزینی همه با بسط رشته ReplaceAllExpandStr

روال جایگزینی همه با بسط رشته(pattern: رشته، text: رشته، template: رشته): رشته
مثل جایگزینی همه با بسط، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Expand.salam

کامپایل Compile

روال کامپایل(pattern: رشته): عبارت باقاعده
الگو را کامپایل می‌کند. اگر الگو ممکن است نادرست باشد، مثلاً از کاربر آمده، اول با معتبر است بررسی‌اش کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

معتبر است IsValid

روال معتبر است(pattern: رشته): منطقی
اگر الگو درست نوشته شده باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

تطبیق Match

روال تطبیق(re: عبارت باقاعده، text: رشته): منطقی
اگر جایی از متن با الگو جور شود، درست برمی‌گرداند. برای جور شدن کل متن، الگو را با ^ و $ محصور کنید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

یافتن Find

روال یافتن(re: عبارت باقاعده، text: رشته): صحیح
جای نخستین مورد جور را بر حسب بایت برمی‌گرداند، یا منفی یک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

جایگزینی Replace

روال جایگزینی(re: عبارت باقاعده، text: رشته، replacement: رشته): رشته
فقط نخستین مورد جور را با متن تازه جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

جایگزینی همه ReplaceAll

روال جایگزینی همه(re: عبارت باقاعده، text: رشته، replacement: رشته): رشته
همه‌ی موارد جور را با متن تازه جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

تطبیق رشته MatchStr

روال تطبیق رشته(pattern: رشته، text: رشته): منطقی
مثل تطبیق، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

یافتن رشته FindStr

روال یافتن رشته(pattern: رشته، text: رشته): صحیح
مثل یافتن، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

جایگزینی رشته ReplaceStr

روال جایگزینی رشته(pattern: رشته، text: رشته، replacement: رشته): رشته
مثل جایگزینی، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam

جایگزینی همه رشته ReplaceAllStr

روال جایگزینی همه رشته(pattern: رشته، text: رشته، replacement: رشته): رشته
مثل جایگزینی همه، با الگوی متنی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: regex-Compile.salam