مفهوم حریص (Greedy) بودن عبارات قاعده مند (Regular Expressions)، به این معنی که در یک متن (عبارت خاص)، از بین یک عبارت کوتاه از آن متن و یک عبارت طولانی از آن متن، که هر دو در عبارت قاعده مند صدق می کنند (و البته تعدادی کاراکتر مشترک دارند)، عبارت طولانی تر انتخاب می شود، در عبارات قاعده مند (Regular Expressions)

هنگامی که یک عبارت قاعده مند (Regular Expressions) را می نویسیم، ممکن است یک عبارت بتواند به دو یا چند شکل مختلف در آن صدق کند. یعنی از عبارت مورد نظر، بتوان چند عبارت مختلف با طول های (تعداد کاراکترهای) مختلف را به عنوان عبارت صدق کرده در عبارت قاعده مند (Regular Expressions)، در نظر گرفت (که البته تعدادی کاراکتر مشترک دارند و بنابراین فقط یکی باید انتخاب گردد). اما سوال این است که کدامیک به عنوان عبارت صدق کرده باید انتخاب شود ؟

پاسخ این سوال، مفهوم حریص (Greedy) بودن عبارات قاعده مند (Regular Expressions) می باشد که به عنوان یک پیش فرض، در عبارات قاعده مند (Regular Expressions) وجود دارد. به این معنی که در یک متن (عبارت خاص)، از بین یک عبارت کوتاه از آن متن و یک عبارت طولانی از آن متن، که هر دو در عبارت قاعده مند (Regular Expressions) صدق می کنند (و البته تعدادی کاراکتر مشترک دارند)، عبارت طولانی تر انتخاب می شود. به همین دلیل است که اصطلاح حریص (Greedy) بودن برای این مفهوم انتخاب شده است، زیرا در اصطلاح می توان گفت که عبارات قاعده مند (Regular Expressions) برای یافتن عبارت های طولانی تر، حرص می زند.

برای اینکه مفهوم حریص (Greedy) بودن عبارات قاعده مند (Regular Expressions) را بهتر درک کنید، به مثال زیر توجه کنید :

مثال

عبارت قاعده مند (Regular Expressions) زیر را برای اشاره به تمامی عبارت های به شکل اعداد 5 رقمی تا 8 رقمی موجود در یک متن، می نویسیم ( کلید شماره 779 ) :

حال فرض کنید که در متن مورد نظرمان، عدد 8 رقمی زیر را داریم :

بنابراین هر یک از عبارت های زیر که از همه یا بخشی از ابتدای عبارت بالا به دست می آیند، در آن عبارت قاعده مند (Regular Expressions) صدق می کنند، اما تنها باید یکی به عنوان عبارت صدق کرده، انتخاب شود :

اما سوال این است که کدامیک باید انتخاب شود ؟

با توجه به مفهوم حریص (Greedy) بودن عبارات قاعده مند (Regular Expressions)، طولانی ترین آنها، یعنی خود عدد 8 رقمی، به عنوان عبارت صدق کرده، انتخاب می شود :

بنابراین سایر عبارت ها که بر اساس چند رقم اول از ابتدای آن عدد 8 رقمی بودند، به دلیل کوتاه تر بودن، انتخاب نشدند.

مثال

عبارت قاعده مند (Regular Expressions) زیر را برای اشاره به تمامی عبارت های به شکل عبارت های شامل کاراکترهای ساخت کلمه (Word Character) با تعداد کاراکتر دلخواه، موجود در یک متن، می نویسیم :

که در آن، عبارت w\ بیانگر یک مجموعه کاراکتر کوتاه (Shorthand Character Set) است ( کلید شماره 771 ) که شامل کاراکترهای ساخت کلمه (Word Character) که در زیر نشان داده ایم، می باشد :

کاربرد علامت + هم این است که امکان تکرار شدن کاراکتر (در اینجا، کاراکتری از کاراکترهای ساخت کلمه (Word Character)) را به وجود می آورد (به صورت حداقل 1 بار تکرار تا هر تعداد بار دلخواه) ( کلید شماره 3068 ).

حال فرض کنید که در متن مورد نظرمان، عبارت زیر را داریم :

بنابراین هر یک از عبارت های زیر که از همه یا بخشی از ابتدای عبارت بالا به دست می آیند، در آن عبارت قاعده مند (Regular Expressions) صدق می کنند، اما تنها باید یکی به عنوان عبارت صدق کرده، انتخاب شود :

اما سوال این است که کدامیک باید انتخاب شود ؟

با توجه به مفهوم حریص (Greedy) بودن عبارات قاعده مند (Regular Expressions)، طولانی ترین آنها، یعنی خود عبارت kelidestan ، به عنوان عبارت صدق کرده، انتخاب می شود :

بنابراین سایر عبارت ها که بر اساس چند کاراکتر اول از ابتدای عبارت kelidestan بودند، به دلیل کوتاه تر بودن، انتخاب نشدند.

نویسنده علیرضا گلمکانی
شماره کلید 782
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)