بيثون إعادة.الباطن مع العلم لا استبدال كافة تواجدات
-
09-06-2019 - |
سؤال
الثعبان مستندات يقول:
re.متعدد:عند تحديد نمط شخصية '^' مباريات في بداية السلسلة و في بداية كل سطر (مباشرة بعد كل سطر جديد)...بشكل افتراضي, '^' مباريات فقط في بداية السلسلة...
ماذا يحدث عندما لا تحصل على ما يلي متوقعة النتيجة ؟
>>> import re
>>> s = """// The quick brown fox.
... // Jumped over the lazy dog."""
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
المحلول
ننظر في تعريف re.sub
:
sub(pattern, repl, string[, count])
4 الحجة هو العد الذي تستخدمه re.MULTILINE
(وهو 8) كما أن العدد ليس كما علم.
لديك لجمع الخاصة بك باستخدام التعابير المنطقية إذا كنت ترغب في استخدام الأعلام.
re.sub(re.compile('^//', re.MULTILINE), '', s)
A flags
كانت حجة وأضاف في بايثون 2.7 لذلك الكاملة التعريف هو الآن:
re.sub(pattern, repl, string[, count, flags])
مما يعني أن:
re.sub('^//', '', s, flags=re.MULTILINE)
يعمل.
نصائح أخرى
re.sub('(?m)^//', '', s)
تعريف كامل من re.sub
هو:
re.sub(pattern, repl, string[, count, flags])
مما يعني أنه إذا كنت أقول بيثون ما هي المعلمات, ثم يمكنك تمرير flags
دون المرور count
:
re.sub('^//', '', s, flags=re.MULTILINE)
أو أكثر بشكل مقتضب:
re.sub('^//', '', s, flags=re.M)
لا تنتمي إلى StackOverflow