سبد خرید 0

وبلاگ

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

عبارت باقاعده چیست ؟

عبارت باقاعده یا regular expression ، یکی از مباحثی می باشد که مختص زبان برنامه نویسی خاصی نیست.
از عبارات با قاعده استفاده های زیادی می شود، برای مثال فرض کنید در یک فرم ثبت نام، میخواهید چک کنید که مقداری که کاربر برای فیلد ایمیل وارد کرده است ، فرمت صحیحی دارد و واقعا آدرس ایمیل می باشد.
از عبارات های باقاعده در اعتبارسنجی ها، استخراج بخشی از متن،عدد و … مورد استفاده قرار میگیرد.

 

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

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

مثال:

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

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

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

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

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

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

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

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

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

مثال :

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

اشتراک گذاری:

مطالب زیر را حتما مطالعه کنید

دیدگاهتان را بنویسید

keyboard_arrow_up