مطابقة زوج من التعليقات في HTML باستخدام تعبيرات منتظمة
-
09-09-2019 - |
سؤال
لدي قالب Mako الذي يبدو مثل هذا:
% if staff:
<!-- begin staff -->
...
<!-- end staff -->
% endif
وبهذه الطريقة إذا اجتازت متغير الموظفين على أنه صحيح، يجب أن تظهر هذه التعليقات. أحاول اختبار ذلك باستخدام تعبير منتظم يبدو وكأنه هذا:
re.search('<!-- begin staff -->.*<!-- end staff -->', text)
لقد تحققت من أن التعليقات تظهر في إخراج HTML، ولكن التعبير العادي لا يتطابق. لقد حاولت حتى وضع التعليقات (<!-- begin staff -->
و <!-- end staff -->
) من خلال re.Scape، ولكن لا يزال حظا. ما الخطأ الذي افعله؟
أم أن هناك طريقة أفضل لتشغيل هذا الاختبار؟
المحلول
بشكل افتراضي .
لا تتطابق مع خطوط نيو هناك - تحتاج إلى إضافة re.DOTALL
اختيار.
re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)
إذا كان لديك أكثر من قسم موظف واحد، فقد ترغب أيضا في جعل التطهير UGREDY:
re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
نصائح أخرى
استخدام محلل HTML مثل htmlparser. في حين أن. يرى يمكنك تقديم بعض الأمثلة حول سبب صعوبة تحليل XML و HTML مع Regex؟ لماذا.
لا تنتمي إلى StackOverflow