"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التقاط المجموعات المتكررة في التعبيرات العادية؟

كيفية التقاط المجموعات المتكررة في التعبيرات العادية؟

تم النشر بتاريخ 2024-11-02
تصفح:389

How to Capture Repeating Groups in Go Regular Expressions?

التقاط مجموعات متكررة في GO

عند محاولة تحليل السلاسل التي تتبع تنسيقًا معينًا، مثل الكلمات الكبيرة متبوعة بصفر أو أكثر مزدوجًا -الوسائط المقتبسة، من الضروري تحديد تعبير عادي يلتقط العناصر المطلوبة. في السيناريو المقدم، محاولة التقاط الوسائط المتكررة باستخدام التعبير العادي التالي:

re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )") *`)
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
فشل في التقاط كافة الوسائط بشكل صحيح لحل هذه المشكلة، تم اقتراح تعبير عادي منقح:

re1, _ := regexp.Compile(`([A-Z] )| (?: "([^"] )")`)
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
يتطابق هذا التعبير العادي المنقح إما مع كلمة كبيرة أو سلسلة ذات علامات اقتباس مزدوجة دون التقاط علامات الاقتباس المحيطة. يسمح هذا الأسلوب بالتقاط أفضل للوسائط المتكررة، كما هو موضح في مقتطف التعليمات البرمجية التالي:

results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1) fmt.Println("الأمر:"، النتائج[0][1]) for _, arg := نتائج النطاق[1:] { fmt.Println("الأرجنتين:"، arg[2])
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
ينجح هذا النهج المنقح في التقاط الأمر ووسائطه الثلاث وطباعتها بشكل منفصل.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3