عندما كنت أقوم ببرمجة وحدة تحميل ZBlog اليوم، كنت بحاجة إلى استخدام روتين فرعي لاستخراج أسماء الملفات في المقالة. في البداية قمت بتعقيد المشكلة ومطابقة جميع أسماء الملفات الممكنة، ولم أكتب قائمة طويلة من التعبيرات العادية فحسب. ولكن أيضًا مقسم أدناه بعد العمل عليه لفترة طويلة، اكتشفت فجأة أن جميع الملفات التي تم تحميلها على Z-Blog تم تخزينها في التحميل، وتمت كتابة العديد من التطابقات المعقدة عبثًا. . . مرحبًا، لا يمكن إهدارها، من الأفضل نشرها في حالة احتياج أي أخ إليها في المستقبل ~~
يمكن اعتبار العملية الفرعية التالية بمثابة مطابقة عالمية جيدة نسبيًا. (ملاحظة: اكتشفت فجأة أن CODE_LITE قد أفلت من UBB الخاص بي!!! بالدوار، كان علي أن أهرب منه بنفسي...)
-------------------------------------------------- ----------------------------------
خافت objRegExp,Matches,i,DC9_DOT_CN_MATCH
خافت aryMatch()
استرداد الحفاظ على aryMatch(0)
تعيين objRegExp=RegExp الجديد
objRegExp.IgnoreCase =True
objRegExp.Global=صحيح
objRegExp.Pattern = "(?:[[^]]+]([^[]+)[/[^]]+])|(?:(?:href|src) =([^s|^>]+)[""|>|s'])"
تعيين التطابقات = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Dim TmpMatch
من أجل i=0 إلى Matches.Count-1
استدعاء InsertDataToArray(Matches(i).SubMatches(0),aryMatch)
استدعاء InsertDataToArray(Matches(i).SubMatches(1),aryMatch)
التالي
من أجل i=0 إلى Ubound(aryMatch)
إذا لم يكن IsNull(aryMatch(i)) وTrim(aryMatch(i))<>"" ثم Response.write aryMatch(i)&"<br>"
التالية
InsertDataToArray(Data,ByRef aryMatch)
إذا كان Trim(Data)<>"" إذن
البيانات=استبدال(البيانات،"'"،")
البيانات=استبدال(البيانات،""""،")
البيانات=استبدال(البيانات،""،"،/")
Data=Split(Data,"/")(Ubound(Split(Data,"/")))
استرداد الاحتفاظ بـ aryMatch(Ubound(aryMatch)+1)
DC9_DOT_CN_MATCH=خطأ
من أجل j=0 إلى Ubound(aryMatch)
إذا كان aryMatch(j)=بيانات، فإن DC9_DOT_CN_MATCH=True
التالي
إذا لم يكن DC9_DOT_CN_MATCH ثم aryMatch(Ubound(aryMatch))=Data
نهاية إذا
وظيفة النهاية
------------------------------------------------ --------------------------------
في الواقع، بالنسبة إلى Z-Blog، فهي تحتاج فقط إلى مطابقة التحميل (ولكن لتوفير المتاعب ، لكي أكون أكثر دقة، قمت ببساطة بإضافة التحميل إلى المباراة المذكورة أعلاه، لذلك يبدو أن التالي أكثر تعقيدًا، في الواقع، يجب أن يكون التحميل التالي أبسط من الناحية النظرية .) فقط اكتب SPLit /.
-------------------------------------------------- ----------------------------------
خافت objRegExp,Matches,i,ZC_UPLOAD_MATCH
خافت aryMatch()
استرداد الحفاظ على aryMatch(0)
تعيين objRegExp=RegExp الجديد
objRegExp.IgnoreCase =True
objRegExp.Global=صحيح
objRegExp.Pattern = "(?:[[^]]+] [^[]*upload/([^[|^\|^/]+)[/[^ ]]+])|(?:(?:href|src)=""{0,1}[^s|^""|^>|^']*upload/([^s| ^>]+)[""|>|s'])"
تعيين التطابقات = objRegExp.Execute("[img]2312.jpg[/img][img]2312.jpg[/img]hh[img][/img]<a href="" src="" Data=Replace( بيانات،""""،"")
استرداد الاحتفاظ بـ aryMatch(Ubound(aryMatch)+1)
ZC_UPLOAD_MATCH=خطأ
من أجل j=0 إلى Ubound(aryMatch)
إذا كان aryMatch(j)=Data إذن ZC_UPLOAD_MATCH=True
التالي
إذا لم يكن ZC_UPLOAD_MATCH ثم aryMatch(Ubound(aryMatch))=Data
نهاية إذا
وظيفة النهاية
المصدر: http://www.dc9.cn/post/279.html