عبارات منظم (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 وقتی الگو از ورودی کاربر میآید (خطا را بررسی کنید).این مبحث بخشی از دوره آموزش کامل گو است.