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

هل يتطابق Go Regexp\'s \.\" مع الأسطر الجديدة؟ السلوك غير المتوقع لأي مطابقة شخصية.

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

 Does Go Regexp\'s \

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