العثور والاستخراج
استخدم FindString والمطابقات الفرعية
العثور والاستخراج درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
ما بعد المطابقة
تخبرك المطابقة ما إذا كان النمط موجودًا. أما عائلة Find فتخبرك بما تمت مطابقته وبموضعه، لتتمكن من استخراج البيانات.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindString("order 42 ready"))
}FindString
تعيد FindString(s) أول تطابق كسلسلة نصية، أو سلسلة نصية فارغة إذا لم يوجد تطابق.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[a-z]+")
fmt.Printf("%q\n", re.FindString("123abc456"))
}FindAllString
تعيد FindAllString(s, n) كل التطابقات على شكل شريحة. مرّر -1 للحصول على جميع التطابقات، أو حدًا موجبًا.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("a1 b22 c333", -1))
}تحديد عدد النتائج
مرّر قيمة موجبة إلى n لإيقاف البحث بعد الوصول إلى ذلك العدد من التطابقات.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
fmt.Println(re.FindAllString("1 2 3 4", 2))
}العثور على الفهرس
تعيد FindStringIndex(s) موضعي بداية ونهاية أول تطابق بالبايت على شكل شريحة من عنصرين.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("cat")
fmt.Println(re.FindStringIndex("a cat here"))
}مجموعات الالتقاط
تنشئ الأقواس مجموعات التقاط. وتعيد FindStringSubmatch التطابق الكامل أولًا، ثم كل مجموعة ملتقطة.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+)-(\\d+)")
m := re.FindStringSubmatch("12-34")
fmt.Println(m)
}استخدام قيم التطابقات الفرعية
استخدم الفهرس للوصول إلى شريحة التطابقات الفرعية: العنصر 0 هو التطابق الكامل، والعنصر 1 هو المجموعة الأولى، وهكذا.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d+):(\\d+)")
m := re.FindStringSubmatch("09:30")
fmt.Println("hour", m[1], "min", m[2])
}المجموعات المسماة
سمِّ المجموعة باستخدام (?P<name>...)، ثم اقرأ اسمها عبر SubexpNames إلى جانب شريحة التطابقات الفرعية.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?P<area>\\d{3})-(?P<num>\\d{4})")
m := re.FindStringSubmatch("555-1234")
for i, name := range re.SubexpNames() {
if name != "" {
fmt.Println(name, m[i])
}
}
}جميع التطابقات الفرعية
تعيد FindAllStringSubmatch(s, n) شريحة من شرائح التطابقات الفرعية، واحدة لكل تطابق. وهذا مناسب جدًا لتحليل سجلات متعددة.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)=(\\d+)")
all := re.FindAllStringSubmatch("x=1 y=2", -1)
for _, m := range all {
fmt.Println(m[1], m[2])
}
}السلوك عند عدم وجود تطابق
عندما لا يطابق شيء، تعيد طرائق Find سلسلة نصية فارغة أو شريحة nil. تحقق من النتيجة قبل استخدام الفهرس لتجنب حدوث panic.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("[0-9]+")
m := re.FindStringSubmatch("no digits")
fmt.Println(m == nil)
}استخراج بيانات حقيقية
اجمع المجموعات لاستخراج الحقول المنظمة من سطر نصي.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\d{4})-(\\d{2})-(\\d{2})")
m := re.FindStringSubmatch("date: 2026-05-30")
fmt.Println("year", m[1])
}تحقق سريع
أي عنصر في شريحة التطابقات الفرعية يمثل التطابق الكامل؟
مراجعة: العثور والاستخراج
يمكنك الآن استخراج البيانات من النصوص:
- تعيد
FindStringوFindAllStringالتطابقات. - تعيد
FindStringSubmatchالتطابق الكامل بالإضافة إلى مجموعات الالتقاط. - استخدم المجموعات المسماة، وتحقق من
nilعند عدم وجود تطابق.
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(\\w+)@(\\w+)")
m := re.FindStringSubmatch("user@host")
fmt.Println(m[1], "at", m[2])
}تعلم Go مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «العثور والاستخراج» مجاني؟
نعم — نص درس «العثور والاستخراج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «العثور والاستخراج»؟
استخدم FindString والمطابقات الفرعية تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «العثور والاستخراج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات regexp
- العثور والاستخراج
- استبدال النصوص
- نصائح الأداء