عبارات با قاعده 3#

بخش اول عبارات باقاعده -آشنایی با عبارت با قاعده و کاراکتر نقطه

بخش دوم عبارت با قاعده - متاکاراکترهای [] و تعیین محدوده

 مباحث این بخش  :

خلاصه ای از Escaping

کاراکترهای نامرئی

متاکاراکترهای ترکیبی

در دو بخش اول آموزش باقاعده با مفاهیم اولیه عبارات با قاعده از جمله Escape کردن کاراکتر نقطه و تعیین محدوده آشنا شدیم .

در این قسمت قصد داریم متا کاراکترهای بیشتری را همراه با نحوه استفاده از آن معرفی کنیم .

Escaoing چیست ؟

بعضی از کاراکترهای معنای خاصی برای Regex دارند که به آنها متا کاراکتر گفته می شود برای استفاده از این متاکاراکترها در الگوهایمان باید انها را Escape کنیم یعنی قبل از آنها یک کاراکتر \ قرار دهیم .مثلا کاراکتر نقطه برای تبیق با هر کاراکتری استفاده می شود در صورتی که بخواهیم کاراکتر نقطه را مورد تطبیق قرار دهیم باید آن را Exape کرد به صورت \. 

فرض کنید در رشته زیر قصد پیدا کردن عبارت Array[0] را داریم :

If(Array[0]){

//Statement}

کد Regexی که برای این منظور نوشته ایم به صورت زیر می باشد :

Array[0]

 ولی همانطور که در بخش های قبلی گفتیم کاراکترهای [] برای Regex معنای خاصی دارند و برای تعیین محدوده  و یا تعیین چندین مورد برای تطبیق از آنها استفاده می شود و عبارتی را که الگوی فوق تطبیق می دهد Array0 می باشد . برای تطبیق با این دو کاراکتر با معنای واقعی خود باید آنها را Escape کنیم یعنی به صورت زیر :

Array\[0\]

عبارت \[ کاراکتر [ را تطبیق میدهد و عبارت \] کاراکتر ] را تطبیق می دهد و به این صورت می توانید به نتیجه مورد نظر برسید .

کارکترهای نامرئی (Whitespace):

کارکترهایی که در ظاهر دیده نمی شوند به کاراکترهای نامرئی معروف هستند . همانطور که میدانید کاراکترهای نامرئی چند نوع هستند که در Regex برای تطبیق با آنها متاکاراکترهایی تعریف شده است.

گاهی اوقات در یک رشته نیاز به تطبیق کاراکترهای نامرئی داریم که در زیر لیست آنها مشخص شده است :

\b : تطبیق با کلید Backspace

\f : تطبیق کاراکتر Form feed

\n : تطبیق کاراکتر line feed

\t : تطبیق کاراکتر Tab

\v : تطبیق کاراکتر vertical Tab

تطبیق ارقام و غیر ارقام :

اگر در قسمت های قبلی به خاطر داشته باشید دو راه برای تطبیق با اعداد را بیان کردیم که در اینجا برای یادآوری به صورت خلاصه دوباره ذکر می کنم :

[0123456789] : در این حالت اعداد بین 0 تا 9 را تطبیق می داد

[0-9] : در این حالت یک محدوده تعریف شده و خلاصه تر از روش قبل است .

اما Regex کار را تز این هم راحتر  کرده است و متاکارکترهایی را بین تطبیق با اعدادو غیر اعداد مشخصی کرده است

\d : برای تطبیق با هر عددی این این متا کاراکتر استفاده می شود و نتیجه ی آن مانند دو روش قبل می باشد ولی نسبت به آنها کوتاه تر و ساده تر می باشد . در واقع میانبری برای [0-9] می باشد .

\D : در صورتی که بخواهیم کاراکترهایی را بجز اعداد 0 تا 9 تطبیق بدهیم باید الگریی به این شکل می نوشتیم : [^0-9] در واقع این الگو تعیین میکرد که اعداد بین 0 تا 9 قابل قبول نمی باشد  اما میانبری برای این الگو وجود دارد و آن استفاده از متا کاراکتر \D می باشد که کار آن تطبیق هر کاراکتری به جز ارقام می باشد و نسبت به [^0-9] ساده تر می باشد .

*برای نوشتن عبارات باقاعده راه های مختلفی وجود دارد .

تطبیق ترکیبی حروف و ارقام :

تا اینجا اگر از شما بخواهند که الگویی را بنویسید که فقط با کاراکترهای حرفی و ارقام و زیر خط مطابقت کند حتما الگویی شبیه به الگوی زیر می نویسید :

[0-9A-Za-z_]

بله الگوی فوق ما را به نتیجه مورد انتظار می رساند ولی راه کوتاه تری هم هست و آن استفاده از متا کاراکتر زیر می باشد :

\w : این متا کاراکتر برای تطبیق با هر کاراکتر حرفی ، عددی و زیر خط می باشد .

و اما عکس کار فوق ، یعنی نوشتن الگویی برای تطبیق با هر کاراکتری به جز کاراکتر حرف ، عدد و زیرخط ، حتما الگویی مثل زیر را در نظر دارید :

[^0-9A-Za-z_]

الگویی فوق برای تطبیق با هر کاراکتری به جزی حروف ، عدد و زیر خط می باشد به دلیل کاراکتر ^ که باعث Not کردن الگو می باشد. اما متا کاراکتری هم برای این الگو در نظر گرفته شده است:

\W : برای تطبیق با هر کاراکتر غیر عددی ،غیر حرفی(کوچک و بزرگ) و زیرخط.

میانبری برای تطبیق کاراکترهای نامرئی :

\s :تطبیق هر کاراکتر نامرئی ([\f\n\t\v\r]) ، که کاربرد هر کدام را هم در ابتدای مقاله شرح دادیم .

\S : تطبیق هر کاراکتری به جز کاراکترهای نامرئی .

متاکاراکتر b\ در مجموعه کاراکترهای s\و S\ نمی باشد .

مثال :الگویی برای پیداکردن عبارت هایی با طول شش که یک درمیان دارای یک حرف و یک عدد هستند:

رشته ورودی :

11345 , tt4koi ,D2R4c8 , 4k5l1p , p9p9p9 , g4g5g

 الگوی مورد نظر برای دسیدن به جواب :

\w\d\w\d\w\d 

 عبارت هایی که پیدا می شوند با رنگ قرمز مشخص شده اند :

11345 , tt4koi ,D2R4c8 , 4k5l1p , p9p9p9 , g4g5g  

مثال : الگویی برای پیدا کردن اسم تمام فایل هایی که پسوند آنها txt. و اسم آنها عدد و با طول سه می باشند :

\d\d\d\.txt

قابل ذکر است که Regex دارای امکانی به اسم تطبیق تکرار می باشد که در بخش های آینده آموزش داده می شود . با استفاده از تطبیق تکرار دیگر لازم نیست در الگوی فوق سه مرتبه d\ را تکرا کنیم .

بخش اول عبارات باقاعده -آشنایی با عبارت با قاعده و کاراکتر نقطه

بخش دوم عبارت با قاعده - متاکاراکترهای [] و تعیین محدوده


توسط : عثمان رحیمی  1 ماه قبل ، پنج شنبه 10 مهر 1393 ساعت 19:56  0  2201

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط