استفاده از Metacharacter ها به عنوان کاراکتر (Character) معمولی، با رها (Escape) کردن آنها (از قواعد تعریف شده برای آنها)، با علامت \ ، در عبارات قاعده مند (Regular Expressions)

در کلید شماره 3058 ، کاربرد Metacharacter ها در عبارات قاعده مند (Regular Expressions) را شرح دادیم و بیان کردیم که وقتی آنها را در یک عبارت قاعده مند (Regular Expressions) به کار می بریم، معنی اصلی خود (معنی کاراکتر خود) را ندارند و معنی خاصی برای عبارت قاعده مند (Regular Expressions) خواهند داشت و در واقع، مرتبط با ساختار عبارت قاعده مند (Regular Expressions) می باشند.

اما گاهی نیاز داریم که Metacharacter ها را به عنوان کاراکتر (Character) معمولی در عبارات قاعده مند (Regular Expressions) به کار ببریم و صرفا به معنای همان کاراکتر خود باشند و قواعدی برای آنها اجرا نشود. در این موارد، باید از روش رها (Escape) کردن آنها (از قواعد تعریف شده برای آنها)، استفاده نماییم.

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

نکته

کاراکتر رها کردن (Escape Character)، کاراکتری است که یک تفسیر جایگزین (Alternative Interpretation) را برای کاراکتر بعد از خود، به کار می برد.

بنابراین وقتی می گوییم روش رها (Escape) کردن، در واقع منظورمان استفاده از کاراکتر رها کردن (Escape Character) می باشد.

مثال

به عنوان مثال، برای علامت نقطه (.) که به عنوان یک Metacharacter ، کاربرد آن را در کلید شماره 3062 شرح دادیم، اگر واقعا بخواهیم که به عنوان کاراکتر (Character) معمولی (یعنی خود علامت نقطه) به کار رود، باید آن را به صورت زیر در عبارت قاعده مند (Regular Expressions) بنویسیم :

یعنی مثلا فرض کنید که باید با یک عبارت قاعده مند (Regular Expressions)، عبارت دقیق زیر را در یک متن پیدا کنیم (که دارای علامت نقطه است) :

برای این منظور، عبارت قاعده مند (Regular Expressions) زیر، به درستی عمل نمی کند، زیرا علامت نقطه (.) به عنوان یک Metacharacter ، قواعد مربوط به خود را اجرا می کند :

بنابراین تمامی موارد زیر در متن، برگردانده می شوند، در صورتی که ما تنها عبارت دقیق kelidestan.com مد نظرمان بوده است :

بنابراین شکل صحیح نوشتن عبارت قاعده مند (Regular Expressions) لازم برای یافتن عبارت دقیق kelidestan.com ، به صورت زیر می باشد (تا فقط عبارت kelidestan.com از متن برگردانده شود) :

نکته

حتما این سوال برای شما پیش آمده است که اگر بخواهیم خود کاراکتر \ که برای این منظور به کار را می رود را به عنوان کاراکتر (Character) معمولی در عبارت قاعده مند (Regular Expressions) داشته باشیم، چگونه باید عمل کنیم ؟

پاسخ این است که برای این منظور، آن را به صورت زیر می نویسیم :

مثال

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

بنابراین باید عبارت قاعده مند (Regular Expressions) زیر را به کار ببریم :

نکته

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

در واقع اکنون که در حال کار با عبارات قاعده مند (Regular Expressions) به شکل معمولی (نه در یک زبان برنامه نویسی خاص) هستیم، حتی بدون رها (Escape) کردن علامت / نیز مشکلی نخواهیم داشت، اما هنگام به کار بردن علامت / در یک زبان برنامه نویسی خاص، ممکن است که این کار برای عملکرد صحیح عبارات قاعده مند (Regular Expressions)، ضروری باشد.

بنابراین در حال حاضر، هر دو شکل رها (Escape) کردن و یا رها (Escape) نکردن علامت / صحیح می باشد، اما رها (Escape) کردن آن را برای زبان های برنامه نویسی خاص نیز در نظر داشته باشید.

یعنی برای این منظور، علامت زیر را :

به صورت زیر می نویسیم :

مثال

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

بنابراین می توانیم هر یک از دو عبارت قاعده مند (Regular Expressions) زیر را به کار ببریم :

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

نکته

اگر Metacharacter ها را در مجموعه های کاراکتر (Character Set) به کار ببریم، برخی از آنها به رها (Escape) کردن نیاز دارند و برخی نیاز ندارند. در این زمینه، کلید شماره 770 را بخوانید.

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

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