Go Regexp: فهم أي تطابق للأحرف
تنص وثيقة بناء جملة Go re2 على أن أي حرف (.) يطابق أي حرف، بما في ذلك السطر الجديد عندما يتم تعيين العلم "s". ومع ذلك، أثار استعلام حديث مخاوف حيث يبدو أن برنامج الاختبار يشير إلى خلاف ذلك.
نتائج البرنامج غير متوقعة
البرنامج المقدم (http://play.golang.org /p/pccP52RvKS) يهدف إلى مطابقة جميع الأحرف، بما في ذلك السطر الجديد، ولكن نتائجه تشير إلى أن أي حرف لا يطابق السطر الجديد.
معالجة التناقض
مثل العديد من محركات regex الأخرى، لا يتطابق Go's re2 مع الأسطر الجديدة مع "." حرف أولي بشكل افتراضي. لتمكين مطابقة السطر الجديد، يجب إضافة علامة "؟ s" (نقطة الكل) إلى التعبير العادي.
مثال مع علامة "؟ s" نسخة معدلة لبرنامج الاختبار الذي يتضمن علامة "؟s":
package main يستورد ( "إف إم تي" "التعبير العادي" ) الوظيفة الرئيسية () { إعادة := regexp.MustCompile("(?s). ") تطابق := re.FindString("abc\ndef") FMT.Println (مباراة)
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile("(?s). ")
match := re.FindString("abc\ndef")
fmt.Println(match)
}
الاستنتاجفي بناء جملة re2 الخاص بـ Go، يتم استخدام "." الحرف التعريفي لا يتطابق بطبيعته مع السطر الجديد. لتمكين مطابقة السطر الجديد، يجب إضافة علامة "؟s" إلى التعبير العادي. من خلال دمج هذه العلامة، يمكن للمستخدمين ضمان سلوك المطابقة الدقيق الذي يتوافق مع وثائق بناء جملة re2.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3