خريطة سلسلة خريطة إلى رقم السطر في إخراج Regex
سؤال
أنا أعمل على "Grep-ase" فائدة في Python بحثا عن ملفات التعليمات البرمجية المصدر Oracle. تغيرت معايير الترميز مع مرور الوقت، لذلك تحاول العثور على شيء مثل "جميع الحذف من الجدول A.Foo" يمكن أن يسبق خطوط متعددة، أم لا، اعتمادا على عمر تلك القطعة من التعليمات البرمجية:
s = """-- multiline DDL statement
DELETE
a.foo f
WHERE
f.bar = 'XYZ';
DELETE a.foo f
WHERE f.bar = 'ABC';
DELETE a.foo WHERE bar = 'PDQ';
"""
import re
p = re.compile( r'\bDELETE\b.+?a\.foo', re.MULTILINE | re.DOTALL )
for m in re.finditer( p, s ):
print s[ m.start() : m.end() ]
هذا المخرجات:
DELETE
a.foo
DELETE a.foo
DELETE a.foo
ماذا اريد:
[2] DELETE
[3] a.foo
[7] DELETE a.foo
[10] DELETE a.foo
هل هناك طريقة سريعة / بسيطة / مدمجة لتعيين مؤشرات السلسلة بأرقام الأسفل؟
المحلول
lineno = s.count("\n",0,m.start())+1
لا تنتمي إلى StackOverflow