سبق Regular Expression|Word Boundary

محمداحمد

لائبریرین
Word Boundry

درج ذیل مثال دیکھیے:
PHP:
>>> text1 = "There is a non stop broadcasting at the station"
>>> find_re(r'road',text1)
Pattern found
>>>

یہاں ہم نے text1 میں ایک لفظ "road" تلاش کیا ہے، جبکہ text1 میں لفظ 'road' (از خود) کہیں موجود نہیں ہے۔ تاہم لفظ 'road' ہماری عبارت میں موجود لفظ 'broadcasting' میں بطور sub -string موجود ہے۔ نتیجتاً ہمیں مثبت جواب ملا جو کہ ہماری منشاء (بہرحال) نہیں ہے۔

ایسی صورتِ حال میں ہم 'b\' کا استعمال کرتے ہیں جو لفظ کی حدود (word boundry) کے لئے استعمال ہوتا ہے۔ یعنی اب ہمارا لفظ صرف اس صورت میں تلاش کیا جائے گا جب وہ اسپیس (whitespace or a non-alphanumeric character) کے ساتھ منسلک ہوگا۔

مثال دیکھیے:
PHP:
>>> text1 = "There is a non stop broadcasting at the station"
>>> find_re(r'\broad',text1)
Nothing found
>>> text2 = "This road leads the way towards mall"
>>> find_re(r'\broad',text2)
Pattern found
>>>

پہلی مثال میں، باوجود اس کے کہ لفظ 'road' لفظ 'broadcasting' میں بطور sub-string موجود ہے ہمیں مثبت جواب نہیں ملا کیوں کہ ہم نے عبارتی نمونے ( Text Patter) میں 'b\' کا استعمال کیا ہے جو اس بات کا تعین کرتا ہے کہ مطلوبہ لفظ ایک مکمل (خود مختار) لفظ ہے یا نہیں۔

دوسری مثال میں چونکہ لفظ 'road' ازخود موجود ہے۔ اس لئے فنکشن نے pattern found کا جواب دیا ہے۔

مزید مثالیں دیکھیے:
PHP:
>>> text3 = "I wrote an essay on a roadside accident"
>>> find_re(r'\broad',text3)
Pattern found
 
 
>>> find_re(r'\broad\b',text3)
Nothing found
 
 
 
>>> text4 = "I wrote an essay on a road side accident"
>>> find_re(r'\broad\b',text4)
Pattern found

text3 میں یوں تو لفظ 'road' موجود نہیں ہے۔ لیکن ایک لفظ 'roadside' موجود ہے جس کا sub-string roadہے اور اس کے آغاز میں وائٹ اسپیس بھی موجود ہے۔ سو ہمیں مثبت جواب ملا ہے، جو ہماری تلاش کو گمراہ کرسکتا ہے۔

اس صورت میں ہمیں یہ شرط عائد کرنا ہوگی کہ لفظ کے شروع اور آخر دونوں میں وائٹ اسپیس کا موجود ہونا ضروری ہے۔ جسے ہم نے '\broad\b' کے عبارتی نمونے میں ظاہر کیا ہے۔ نتیجہ سامنے ہے۔

text4 میں لفظ 'road' چونکہ باقاعدہ (دونوں اطراف میں وائٹ اسپیس کے ساتھ) موجود ہے اس لئے جواب مثبت ملا ہے۔
 
Top