يمكنك القيام بالأمر:
css = """
/*
author : name
uri : link
etc
*/
bla bla bla. Blah blah
x: 10;
color: red;
/* header */
/* footer */
"""
import re
pat = r'\/\*([\S\s]*?)\*\/'
print re.findall(pat, css)
print re.search(pat, css).group()
سؤال
أرغب في استخراج كتلة التعليق الأولى من ملف CSS الذي يشبه هذا:
/*
author : name
uri : link
etc
*/
دون استخراج التعليقات الأخرى
/* header */
/* footer */
لذلك حاولت هذا:
print re.findall(r'\/\*(.*)\*\/', cssText )
هذا أعطاني كل التعليقات الأخرى باستثناء الكتلة التي أحتاجها. لذلك قمت بتغييره إلى هذا ، لأكون أكثر دقة:
print re.findall(r'\/\*\n(.*)^\*\/', cssText )
وكانت النتيجة لا شيء:
[]
هل لديك اقتراحات؟ شكرًا :-)
المحلول 3
يمكنك القيام بالأمر:
css = """
/*
author : name
uri : link
etc
*/
bla bla bla. Blah blah
x: 10;
color: red;
/* header */
/* footer */
"""
import re
pat = r'\/\*([\S\s]*?)\*\/'
print re.findall(pat, css)
print re.search(pat, css).group()
نصائح أخرى
إذا كنت بحاجة فقط إلى التعليق الأول ، يمكنك ببساطة استخدام النتيجة الأولى فقط:
print re.findall(r'\/\*(.*)\*\/', cssText )[0]
تستطيع ايضا استخذام re.search
الذي يبحث عن أول حدوث مطابقة:
print re.search(r'\/\*(.*)\*\/', cssText )
عندما تتطابق مع سلسلة خطوط متعددة ، تحتاج إلى صنع. تطابق n أيضًا:
print re.findall(r'\/\*\n(.*?)\*\/', cssText, re.S)