سؤال

أرغب في استخدام ميزة البحث والاستبدال في IntelliJ لإجراء التحويل التالي:

// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar

لقد حاولت ما يلي:

النص الذي سيتم العثور عليه: model.put\((.*),(.*)\)استبدل ب: model\[\\1\] = \\2

لكن يبدو أن Intellij لا يتعرف على ذلك \\1 و \\2 كمراجع خلفية.لقد حاولت أيضًا استخدام شرطة مائلة واحدة، لكن هذا لم ينجح أيضًا.

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

المحلول

يستخدم IntelliJ $1 ل إستبدال المراجع الخلفية.

من مساعدة IntelliJ:

لمزيد من المعلومات حول التعبيرات العادية وصياغتها، راجع وثائق java.util.regex يجب أن تحتوي المراجع الخلفية على $n، بدلاً من تنسيق .

نصائح أخرى

باختصار، يجب عليك استخدام $1 ل $n ل إستبدال المراجع الخلفية. \1 بناء الجملة مخصص فقط للمراجع الخلفية داخل البحث.

في IntelliJ 2016، تكون الوثائق داخل التطبيق مضللة.فيما يلي اقتباس أفضل من المستندات الكاملة:

إذا كنت بحاجة إلى إحالة السلسلة الفرعية المطابقة في مكان ما خارج التعبير العادي الحالي (على سبيل المثال، في تعبير عادي آخر كسلسلة بديلة)، فيمكنك استردادها باستخدام علامة الدولار ($num، حيث num = 1..n).

مصدر: 2016.1 بناء جملة التعبير العادي، نصائح وحيل

وومساعدة السياقية لالتعابير المنطقية في فكرة 9.0 (وربما إصدارات أخرى) في المنتج يبدو أن تكون غير صحيحة. وهو ينص على ما يلي:

  Back references
  \n
  Whatever the nth capturing group matched

ولكن على ما يبدو، كما هو مذكور في الإجابات السابقة وهي تجربتي، انها حقا \ $ ن المراجع الوراء، بدلا من \ ن

ويمكنك الحصول على هذه المساعدة السياقية من خلال النقر على رابط "[مساعدة] 'بجوار الخيار الراديو" تعبير منتظم "في مربع الحوار" استبدال نص "

وفكرة IntelliJ / مرجع / تعبير منتظم بناء الجملة المرجعي


والمباريات التعبير الجزئي ويتذكر المباراة. إذا كنت بحاجة إلى استخدام سلسلة فرعية مطابقة داخل نفس التعبير العادية، يمكنك استرجاعها باستخدام backreference (\ الأسطوانات، حيث الأسطوانات = 1..n). إذا كنت بحاجة إلى إحالة سلسلة فرعية مطابقة في مكان ما خارج التعبير العادي الحالي (على سبيل المثال، في تعبير عادي آخر في مجال استبدال)، يمكنك الحصول عليه باستخدام علامة الدولار ($ الأسطوانات، حيث الأسطوانات = 1..n). إذا كنت بحاجة إلى تضمين الأحرف الأقواس في التعبير الجزئي، استخدم "(" أو ")".

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