إذا كانت المتطابقة (G: الاحتمالات ، "استخدام REVEREFENCES بعد regex في Vim (Script )؟")

StackOverflow https://stackoverflow.com/questions/1995286

  •  22-09-2019
  •  | 
  •  

سؤال

أود أن أكون قادرًا على ، على سبيل المثال ، التحقق من قيمة $ 1 داخل الكتلة ، للحصول على المؤتمر الخلفي الأول. لكن Vimscript ليس بيرل.

هل هناك طريقة للقيام بذلك؟ أنا على دراية بإمكانية استخدام 1 ، 2 ، وما إلى ذلك ، داخل Regex ، لكني أرغب في مطابقة ثم استخدام القيم في العبارات اللاحقة ، قدر الإمكان في Perl ، PHP ، إلخ.

على سبيل المثال ، سيكون من الجيد حقًا أن يكون لديك في الجزء الذي تم تقييمه من أوامر G // ، حتى تتمكن من فعل أشياء مثل

:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be

لإجمالي قيم بعض الأرقام في ملف.

هل يمكن هذا؟

إذا لم يكن الأمر كذلك ، فهل هناك سبب وجيه؟

هل كانت مفيدة؟

المحلول

matchlist({expr}, {pat}[, {start}[, {count}]])

يعود 1 ، 2 ، 3 ، إلخ كما هو موجود عند البحث عن {pat} في {expr}

مثال:

قائمة مطابقة الصدى ('ACD' ، '(a) ؟ (b) ؟ (c) ؟ (.*)')

النتائج في: ['ACD' ، 'A' ، '' ، 'C' ، 'D' ، '' ، '' ، '' ، '' ، '

نصائح أخرى

في مزيد من الوحي الذي قمت به :lhelpgrep submatch | lope واكتشف مرفقًا مفيدًا آخر على الأقل: يمكنك استخدامه submatch({nr}) من الجانب الذي تم تقييمه من أ substitute أمر. على سبيل المثال

:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/

لقد جربت هذا النهج من قبل ولكني أعتقد أنني كنت أبحث عن / backref / ولم أحصل على المعلومات التي كنت أبحث عنها.

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