عبارات با قاعده (Regular Expressions) - قسمت اول

عبارات با قاعده (Regular Expressions):

کاراکتر "." (نقطه) :

از این کاراکتر به عنوان تطابق با هر کاراکتری استفاده می شود ، هر کاراکتری در عبارات با قاعده می تواند به جای کاراکتر "." قرار بگیرد .

مثال:

r.g

در عبارت Regex بالا برای تصابق کلمات سه حرفی استاده می شود که حرف اول آنها r و حرف آخر آنها g باشد استفاده می شود . در عبارت بالا به جای کاراکتر نقطه هر کاراکتری میتواند قرار بگیرد .

مواردی که قابل قبول هستند:

rag , rxg ,rtg ,rgg , rrg, rog ,… 

نکته : در عبارات با قاعده به جای کاراکتر نقطه فقط یه کاراکتر قرار می گیرد .

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

This part is about regular Expressions

 در متن بالا  ابتدا هر سه کاراکتر کنار هم را تطابق میدهد ولی آنهایی درست خواهند بود که کاراکتر اول ‘ r ‘ و کاراکتر وسط هر چیزی و کاراکتر آخر ‘ g ‘ باشد .

This part is about regular Expressions

نکته :Regular Exressions ها به حرف کوچک و بزرگ حساس هستند (Case Sensetive).

اگر متن ورودی بالا را به 

This part is about Regular Expressions

 

تغییر دهیم هیچ مقداری یافت با عبارت Regex ی که تعریف کرده ایم تطابقت  نمیکند به این دلیل که Reg در متن با حرف بزرگ آمده است  . در آموزش های بعدی برای رفع این مشکل بحث خواهد شد.

نکته : در Regular Expressions می توانیم یک یا چند تا کاراکتر "." را پشت سر هم قرار دهیم .

مثال :

Regex =”a..b”

 

مواردی چهار کاراکتری را انتخاب میکند که  کاراکتر اول آنها “a”  و کاراکتر آخر آنها “b” باشد و به جای دو نقطه وسط هم دو کاراکتر میتوانند قرار بگیرد .

موراد که قابل قبول هستند :

aaab , abbb, aabb , asdb , abab , artb , aoeb ,…

 

تمرین : عبارت با قاعده ای می خواهیم که اسم تمام فایل های چهار حرفی که کاراکتر اول آنها t  باشد و کاراکتر آخر آنها p باشد و پسوند آنها .txt باشد .

عبارت با قاعده زیر را برای این تمرین نوشته ایم ،که مواردی را انتخاب میکند که کاراکتر اول نام آنها “p”  و به جای ".." هر دوکاراکتری میتواند قرار گیرد و بعد کاراکتر آخر “t” و در انتها .txt

Regex =”p..t.txt”

اما عبارت با قاعده بالا نه تنها نیاز ما را برطرف نمی کند بلکه یک مشکل بزرگ و خطرناک دارد و آن این است که به جای کاراکتر “.” مابین دوتا “t”   هر کاراکترهایی میتواند قرار بگیرد .

مثلا چند موردی که Regex بالا برمیگرداند :

Paat.txt (P) , paatttxt(×) , prthbtxt(×)

 

هماهنطور که گفتیم به جای کاراکتر “.” هر کاراکتری قابل قبول می باشد، برای رفع این مشکل چه باید کرد.

تطبیق با خود کاراکتر نقطه :

کاراکتر نقطه جزو کاراکترهای هست که برای Regex معنای خاصی دارد ،باید به روشی به Regex مشخص کنیم که منظور از کاراکتر "."  خود کاراکتر نقطه (.) می باشد برای حل این مشکل از کاراکتر “\” قبل از کاراکتر نقطه استفاده میکنیم به این صورت به regex میگوییم که منظور از “\.” تطبیق با خود کاراکتر نقطه می باشد .

به این کار Escape کردن کاراکترهای خاص گفته میشود.

هر وقت نیاز داشتید کاراکترهایی را که برای Regex معنای خاصی دارند مثل “.” با خود آن کاراکتر بررسی کنید باید آن را Escape کنید یعنی قبل از کاراکتر مورد نظر  کاراکتر “\” قرار دهید .

تمرین قبل را کامل میکنیم .تمام  اسم فایل های چهار حرفی با پسوند .txt که کراکتر اول آن t و کاراکتر آخر آن p باشد و دو کاراکتر وسط آن هر کاراکتری میتواند باشد .

Regex =”t..p\.txt”

با این عبارت باقاعده اسم تمام فایل های چهار حرفی را برمیگرداند که پسوند .txt و کاراکتر اول t و کاراکتر آخر p می باشد.

چون ما قصد داشتیم پسوند هایی .txt را بگیریم با Escape کردن کاراکتر نقطه قبل از txt به هدف مورد نظر رسیدیم و به جای “\.” فقط و فقط خود کاراکتر نقطه می تواند قرار بگیرد .

 


توسط : عثمان رحیمی  1 ماه قبل ، سه شنبه 4 شهریور 1393 ساعت 18:23  1  2664

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


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

مطالب مرتبط

نظرات خوانندگان

کاربر مهمان ()  در تاریخ : 1 ماه قبل ، شنبه 31 مرداد 1394 ساعت 00:00

سلام اگر بخواهیم به یک ممیز در یک عبارت عددی دسترسی داشته باشیم راهی هست؟مثلا: 2/3 و اینکه در اطراف ممیز فقط عدد باشد نه فضای خالی مثلا ممیز در عبارت زیر مد نظرم نیست: 2 / 3