عبارات منظم (RegEx)

کار با پکیج regexp: جستجو، تطبیق، جایگزینی و استخراج الگوها.

عبارت منظم چیست؟

RegEx زبانی برای توصیف الگوهای متنی است — جستجو، اعتبارسنجی و استخراج متن با آن انجام می‌شود.

پکیج regexp

import "regexp"

MatchString — تطبیق ساده

matched, _ := regexp.MatchString("go", "زبان گو")

fmt.Println(matched)   ← true (شامل "go" است)

Compile — الگوی آماده (کارآمدتر)

re := regexp.MustCompile(`\d+`)   ← یک یا چند رقم

fmt.Println(re.MatchString("سن: 25"))   ← true
fmt.Println(re.MatchString("بدون عدد"))  ← false

FindString — اولین تطبیق

re := regexp.MustCompile(`\d+`)

fmt.Println(re.FindString("علی ۲۵ ساله، ۱۷۰ سانتی‌متر"))   ← ۲۵

FindAllString — همه تطبیق‌ها

re := regexp.MustCompile(`\d+`)

fmt.Println(re.FindAllString("a1 b22 c333", -1))
← [1 22 333]   ← -1 یعنی همه

ReplaceAllString — جایگزینی

re := regexp.MustCompile(`\d+`)

result := re.ReplaceAllString("رمز: 12345", "***")
fmt.Println(result)   ← رمز: ***

گروه‌های捕获 (Capture Groups)

re := regexp.MustCompile(`(\d{4})-(\d{2})-(\d{2})`)   ← تاریخ

match := re.FindStringSubmatch("تاریخ: 2026-08-15")
fmt.Println(match[0])   ← 2026-08-15 (کل)
fmt.Println(match[1])   ← 2026 (سال)
fmt.Println(match[2])   ← 08 (ماه)
fmt.Println(match[3])   ← 15 (روز)

جدول الگوهای رایج

الگومعنا
\dرقم (0-9)
\wحرف، رقم یا _
\sفاصله
.هر کاراکتری
*صفر یا بیشتر
+یک یا بیشتر
?صفر یا یک
{3}دقیقاً ۳ بار
[abc]a یا b یا c
^ / $شروع / پایان رشته

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

emailRe := regexp.MustCompile(`^[\w.-]+@[\w.-]+\.\w+$`)

fmt.Println(emailRe.MatchString("ali@example.com"))   ← true
fmt.Println(emailRe.MatchString("نامعتبر"))            ← false
از regexp.MustCompile برای الگوهای ثابت استفاده کنید (فقط یک بار کامپایل می‌شود) و regexp.Compile وقتی الگو از ورودی کاربر می‌آید (خطا را بررسی کنید).

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

ابزارهای مرتبط