وضع الجشع:
يتخلف مؤشر الكمية إلى وضع الجشع ما لم يرد خلاف ذلك. ستستمر تعبيرات أنماط الجشع حتى لا تتمكن من ذلك. إذا وجدت أن نتيجة مطابقة التعبير لا تتطابق مع التعبير المتوقع ، فمن المحتمل جدًا أن يكون ذلك لأنه - تعتقد أن التعبير سوف يتطابق مع الشخصيات القليلة الأولى فقط ، ولكنه في الواقع نمط جشع ، لذلك سيستمر في مطابقة.
الجشع وغير الخضراء ، بالإضافة إلى؟ غير خضراء:
var s = '1023000'.match (/(/d+) (0*)/) ؛ s ["1023000" ، "1023000" ، ""] var s =' 1023000'.match (/^(/d+) (0*) $/) ؛ s [1023000 "،" 1023000 "،" "] var s = '1023000'.match (/^(/d+؟) (0*) $/) ؛ s ["10" ، "1" ، "0"]
تعبيرات Java العادية تستخدم نمط مطابقة الجشع بشكل افتراضي. إنها أطول مباراة من هذا النوع (.*). إذا كانت أقصر مباراة مطلوبة ، فسيتم تغييرها إلى (.*؟) ، فهذا نمط بالكاد تطابق.
تحليل المبدأ:
إذا كان نمط مطابقة للجشع ، فسيتطابق مع محرك التعبير العادي حتى نهاية السلسلة. عندما تكون المباراة خاطئة ، فإنها ستخلف وتجد آخر موقع مطابقة لإرجاع نتيجة المطابقة. إذا كان نمطًا بالكاد مطابقة ، فسيتطابق مع محرك التعبير العادي مع الحرف في نهاية النمط ، ثم اتخذ خطوة إلى الوراء ، وتجد أن المباراة خاطئة ، ثم تتبع إلى الموضع الذي تكون فيه أحدث مباراة موجودة في الاحتياط صحيحة ، وإعادة النتيجة.
انظر إلى الكود:
مثال 1:
public void test51 () {string str = "aaa/" bbb/"ccc/" dd/"eee" ؛ system.out.println (str) ؛ str = str.replaceall ("/"(.*)/" "،"@") ؛ system.out.println (str) ؛ } الإخراج:
AAA "BB" CC "DDD" EEAAA@EEE
مثال 2:
test public void test52 () {string str = "aaa/" bbb/"ccc/" dd/"eee" ؛ system.out.println (str) ؛ str = str.replaceall ("/"(.*؟)/" "،"@") ؛ system.out.println (str) ؛ } الإخراج:
AAA "BB" CC "DDD" EEAAA@CCC@EEE