سؤال

أرغب في استخراج كتلة التعليق الأولى من ملف 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)

نرى:http://docs.python.org/2/library/re.html#re.s

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top