Backreferences في JScript

Backreferences وتستخدم إلى العثور على مجموعات أحرف مكررة. يتم استخدامها أيضا إلى إعادة تنسيق سلسلة إدخال بواسطة إعادة ترتيب ووضع العناصر في سلسلة الإدخال.

يمكنك الإشارة إلى subexpression من داخل تعبير عادي، و من ضمن سلسلة استبدال. كل subexpression هو المعرف بواسطة رقم، و هو يشار إليها backreference.

يتم استخدام الأقواس في تعبير عادي إلى إنشاء subexpression. يمكن استرداد submatch الناتجة بواسطة البرنامج. لمزيد من المعلومات، راجع alternation و Subexpressions.

استخدام Backreferences

يمكنك الإشارة إلى subexpression من داخل تعبير عادي.

في تعبير عادي، حفظ كل submatch هو تخزين كما هو مصادفة اليسار لليمين. رقم احتياطي الذي تم submatches sإلىred تبدأ في 1 ومتابعه إلى 99 subexpressions بحد أقصى. داخل العادية تعبير، يمكنك الوصول إلى كل مخزن باستخدام\ n ، الموقع أن n هو واحد أو الثاني من الأرقام العشرية تعريف المخزن مؤقت محدد.

تطبيق واحد من backreferences يوفر القدرة على إلى موقع حدوث كلمتين مماثلة إلى gether في نص. تستغرق الجملة التالية: Is is the cost of of gasoline going up up?

هذه الجملة تحتوي على العديد من الكلمات المكررة. قد تكون مفيدة ل devise طريقة لإصلاح الجملة دون الحاجة إلى البحث عن التكرارات لكل كلمة. يستخدم تعبير عادي التالي JScript subexpression مفرد إلى القيام بذلك.

/\b([a-z]+) \1\b/gi

subexpression في ترتيب هو الحالة هو كل شيء بين أقواس. يتضمن ذلك subexpression حرف أبجدي أو أكثر، كـ المحدد بواسطة [a-z]+. الجزء الثاني من تعبير عادي هو المرجع إلى submatch المحفوظة مسبقاً على التواجد الثاني هو الكلمة مطابقة تماما بالتعبير parenthetical. \1يستخدم لتعيين أول submatch.

\bالكلمة بأحرف التعريف حد تأكد منفصلة فقط تلك الكلمات يتم الكشف عنها. Otherwهوe، عبارة مثل "هو هو sued"او"رقم هو هو" قد يكون التعرف بشكل غير صحيح بترتيب هو التعبير.

يلي مثال قوائم الكلمات المكررة. ويظهر هذا مدى التلائمات و submatches يمكن استرداد في تعليمات برمجية.

var result;

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"

// Get the first match.
result = re.exec(src);

while (result != null)
{
    // Show the entire match.
    print();
    print(result[0]);

    // Show the submatches.
    for (var index = 1; index < result.length; index++)
    {
        print("submatch " + index + ": " + result[index]);
    }

    // Get the next match.
    result = re.exec(src);
}

// Output:
//  Is is
//  submatch 1: Is

//  of of
//  submatch 1: of

//  up up
//  submatch 1: up

يمكنك أيضا الإشارة إلى subexpression من ضمن سلسلة استبدال.

استخدام تعبير عادي الموضح أعلاه، ما يلي مثال يستبدل تواجد كلمتين متطابقة المتتابعة بالمفرد لنفس الكلمة. في استبدال الأسلوب، $1يشير إلى اﻷول submatch المحفوظة. إذا كان هناك هو submatch واحد أو أكثر، يمكنك الرجوع إليها بالتتالي ك $2، $3، وهكذا دواليك.

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"
var result = src.replace(re, "$1");
print(result);
// Output:
//  Is the cost of gasoline going up?

يلي مثال تتبادل كل ينشئ ازدواجًا من الكلمات في السلسلة.

var re = /(\S+)(\s+)(\S+)/gi
var src = "The quick brown fox jumps over the lazy dog."
var result = src.replace(re, "$3$2$1");
print(result);
// Output:
//  quick The fox brown over jumps lazy the dog.

راجع أيضًا:

المرجع

استبدال أسلوب

المبادئ

alternation و Subexpressions

موارد أخرى

مقدمة إلى تعابير عادية