C# Regex ٹیوٹوریل: C# ریگولر ایکسپریشن کیا ہے؟

یہ C# ریجیکس ٹیوٹوریل بتاتا ہے کہ C# میں ریگولر ایکسپریشن کیا ہے، اس کی نحو، ریجیکس کلاس کے طریقے، اور مثالوں کی مدد سے ان طریقوں کو کیسے استعمال کیا جائے:

ریگولر ایکسپریشن C# میں ایک خاص کریکٹر پیٹرن کو ملانے کے لیے استعمال کیا جاتا ہے۔ ریگولر ایکسپریشنز استعمال کیے جاتے ہیں جب بھی صارف کو کچھ دہرانے والے پیٹرن کو تلاش کرنے یا ڈیٹا کی توثیق کرنے کی ضرورت ہوتی ہے یا ڈیٹا فارمیٹنگ کی جانچ پڑتال کے لیے بھی۔

ایک RegEx کا استعمال یہ معلوم کرنے کے لیے کیا جاتا ہے کہ آیا سٹرنگ کسی مخصوص کریکٹر پیٹرن پر مشتمل ہے یا اس سے مماثل ہے۔ ریجیکس بنیادی طور پر ایک کریکٹر کی ترتیب ہے جو ایک پیٹرن کو ظاہر کرتا ہے۔

ایک پیٹرن نمبرز، کریکٹر، یا سب کے مجموعے سے لے کر کچھ بھی ہوسکتا ہے۔ ریجیکس کو توثیق کے لیے بڑے پیمانے پر استعمال کیا جاتا ہے۔ تاروں کو پارس کرنا یا ملانا، مثال کے طور پر، یہ معلوم کرنا کہ آیا کوئی سٹرنگ کرنسی کی شکل، فون نمبر، یا تاریخ کی شکل سے ملتی ہے۔

C# 6 میں ریجیکس کلاس>

ریجیکس کلاس کو C# میں ریجیکس آپریشنز کرنے کے لیے استعمال کیا جاتا ہے۔ اس میں کئی مختلف طریقے ہیں جن کا استعمال regex سے متعلق مختلف کارروائیوں کو انجام دینے کے لیے کیا جا سکتا ہے۔

اسے بڑے متن کو پارس کرنے کے لیے استعمال کیا جا سکتا ہے تاکہ کسی خاص کریکٹر کی ترتیب کو تلاش کرنے کے لیے ایسے طریقے استعمال کیے جا سکیں جو میچ کو انجام دینے کے لیے استعمال کیے جا سکتے ہیں۔ تبدیل کریں یا کریکٹر کی ترتیب کو تقسیم کرنے کے لیے استعمال کیا جا سکتا ہے۔

رجیکس کلاس نام کی جگہ کے اندر موجود ہے؛ System.Text.RegularExpression. کلاس ایک کریکٹر سیکوینس کی شکل میں ایک سٹرنگ کو پیرامیٹر کے طور پر قبول کرتی ہے۔

C# Regex طریقے

جو کہ ہم نے "^Super" تخلیق کیا ہے وہ سپر کی تمام اقدار سے مماثل ہے، یہاں تک کہ سپرمین یا مافوق الفطرت لیکن ہم صرف لفظ "Super" نہیں چاہتے۔

اس کا مطلب ہے کہ لفظ کے بعد سفید جگہ ہونی چاہیے لفظ کے آخر کو نشان زد کریں اور دوسرے لفظ کا آغاز کریں۔ ایسا کرنے کے لیے ہم پیٹرن میں علامت "\s" کا اضافہ کریں گے اور اس طرح اپنا حتمی پیٹرن

^Super\s

Scenario 3: درست فائل تلاش کرنے کے لیے ریگولر ایکسپریشن کا استعمال کریں گے۔ امیج فائل ٹائپ ایکسٹینشن والے نام۔

ایک اور اہم ریئل ٹائم منظر نامے جس کا ڈویلپرز کو اکثر سامنا کرنا پڑتا ہے وہ ہے فائل کی قسموں کی توثیق۔ فرض کریں کہ ہمارے پاس UI میں ایک اپ لوڈ بٹن ہے، جو صرف تصویری فائل کی قسم کی توسیعات کو قبول کر سکتا ہے۔

ہمیں صارف کی اپ لوڈ فائل کی توثیق کرنی ہوگی اور اگر اس نے غلط فائل فارمیٹ اپ لوڈ کیا ہے تو اسے مطلع کرنا ہوگا۔ یہ باآسانی ریگولر ایکسپریشن کے استعمال سے حاصل کیا جا سکتا ہے۔

اس کو چیک کرنے کے لیے ذیل میں ایک سادہ پروگرام دیا گیا ہے۔

public static void Main(string[] args) gif)$"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("abc.jpg")); Console.WriteLine(reg.IsMatch("ab_c.gif")); Console.WriteLine(reg.IsMatch("abc123.png")); //When pattern doesnt match Console.WriteLine(reg.IsMatch(".jpg")); Console.WriteLine(reg.IsMatch("ask.jpegj")); 

آؤٹ پٹ

True

True

True

False

False

وضاحت

یہاں ہمیں ایک میچ کرنے کی ضرورت ہے فائل کا نام. ایک درست فائل کا نام تین حصوں پر مشتمل ہوتا ہے ( فائل کا نام + . + فائل ایکسٹینشن )۔ ہمیں تینوں حصوں سے ملنے کے لیے ایک ریگولر ایکسپریشن بنانے کی ضرورت ہے۔ آئیے پہلے حصے یعنی فائل کا نام ملا کر شروع کریں۔ فائل کا نام حروف نمبری اور خصوصی حروف پر مشتمل ہو سکتا ہے۔

جیسا کہ پہلے ذکر کیا گیا ہے کہ علامت "\w" ہے۔ نیز، فائل کا نام ایک یا ایک سے زیادہ ہو سکتا ہے۔اس کے بعد ایک ڈاٹ (.) پھر ویب سائٹ کا نام اس کے بعد ایک ڈاٹ (.) اور آخر میں ایک ڈومین ایکسٹینشن۔

لہذا، پچھلے منظر نامے کی طرح ہم اسے جزوی طور پر ملانے کی کوشش کریں گے۔ . آئیے پہلے "www" کو ملا کر شروع کریں۔ حصہ لہذا ہم ابتدائی علامت کے ساتھ شروع کرتے ہیں، پھر "www." یہ ایک ایسی چیز ہے جو طے شدہ ہے، اس لیے ہم شروع کی علامت کا استعمال کرتے ہیں جس کے بعد عین الفاظ کو ملایا جائے۔

“^www.”

پھر ہم دوسرے حصے پر کام شروع کریں گے۔ ویب ایڈریس کا دوسرا حصہ کوئی بھی حروف نمبری نام ہو سکتا ہے۔ لہذا، یہاں ہم کریکٹر کلاس میں موجود مربع بریکٹ استعمال کریں گے تاکہ اس رینج کو متعین کیا جا سکے جس کو میچ کرنے کی ضرورت ہے۔ دوسرے حصے کے ساتھ دوسرا حصہ شامل کرنے کے بعد ہمیں ملے گا۔

“^www.[a-zA-Z0-9]{3,20}”

یہاں ہم نے ویب سائٹ کے نام کے لیے کم از کم اور زیادہ سے زیادہ کریکٹر کی لمبائی کی وضاحت کرنے کے لیے گھنگھریالے منحنی خطوط وحدانی بھی شامل کیے ہیں۔ ہم نے کم از کم 3 اور زیادہ سے زیادہ 20 دیے ہیں۔ آپ کوئی بھی کم سے کم یا زیادہ سے زیادہ طوالت دے سکتے ہیں۔

اب، ویب ایڈریس کے پہلے اور دوسرے حصے کا احاطہ کرنے کے بعد ہمارے پاس صرف آخری رہ گیا ہے۔ حصہ، یعنی ڈومین کی توسیع۔ یہ بالکل اسی طرح ہے جو ہم نے پچھلے منظر نامے میں کیا تھا، ہم OR کا استعمال کرکے اور ہر درست ڈومین ایکسٹینشن کو سرکلر بریکٹ کے اندر بند کرکے براہ راست ڈومین ایکسٹینشن کے ساتھ میچ کریں گے۔

اس طرح اگر ہم ان سب کو ایک ساتھ شامل کرتے ہیں تو ہمارے پاس ہوگا کسی بھی درست ویب ایڈریس سے ملنے کے لیے ایک مکمل ریگولر ایکسپریشن۔

www.[a-zA-Z0-9]{3,20}.(com|in|org|co\.in|net|dev)$

منظر نامہ 5: ریگولر ایکسپریشن کو درست کرنے کے لیے استعمال کریںای میل آئی ڈی فارمیٹ

آئیے فرض کریں کہ ہمارے ویب پیج پر ایک سائن ان فارم موجود ہے جو صارفین سے اپنا ای میل ایڈریس درج کرنے کو کہتا ہے۔ واضح وجوہات کی بناء پر، ہم نہیں چاہیں گے کہ ہمارا فارم غلط ای میل پتوں کے ساتھ آگے بڑھے۔ اس بات کی توثیق کرنے کے لیے کہ آیا صارف کا درج کردہ ای میل ایڈریس درست ہے یا نہیں ہم ایک ریگولر ایکسپریشن استعمال کر سکتے ہیں۔

ذیل میں ایک ای میل ایڈریس کی توثیق کرنے کے لیے ایک سادہ پروگرام دیا گیا ہے۔

public static void Main(string[] args) { string patternText = @"^[a-zA-Z0-9\._-]{5,25}.@.[a-z]{2,12}.(com|org|co\.in|net)"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("[email protected]")); Console.WriteLine(reg.IsMatch("[email protected]")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("[email protected]")); }

آؤٹ پٹ

True

True

False

وضاحت

A درست ای میل ایڈریس میں حروف تہجی، ہندسے، اور کچھ خاص حروف جیسے ڈاٹ (.)، ڈیش (-)، اور انڈر سکور (_) پر مشتمل ہے جس کے بعد "@" علامت ہے جس کے بعد ڈومین کا نام اور ڈومین ایکسٹینشن آتا ہے۔

اس طرح، ہم ای میل ایڈریس کو چار حصوں میں تقسیم کر سکتے ہیں یعنی ای میل شناخت کنندہ، "@" علامت، ڈومین کا نام، اور آخری ڈومین ایکسٹینشن۔ پہلا حصہ. یہ کچھ خاص حروف کے ساتھ الفا عددی ہو سکتا ہے۔ فرض کریں کہ ہمارے پاس اظہار کا سائز 5 سے 25 حروف تک ہے۔ جیسا کہ ہم نے اسے پہلے لکھا تھا (ای میل منظر نامے میں)، ہم مندرجہ ذیل اظہار کے ساتھ آ سکتے ہیں۔

^[a-zA-Z0-9\._-]{5,25}

اب، دوسرے حصے کی طرف بڑھتے ہیں۔ یہ نسبتاً آسان ہے کیونکہ ہمیں صرف ایک علامت یعنی "@" سے ملنا ہے۔ اسے مذکورہ بالا اظہار میں شامل کرنے سے ہمیں حاصل ہوتا ہے۔

^[a-zA-Z0-9\._-]{5,25}.@

تیسرے حصے میں منتقل ہونا یعنی ڈومین کا نام ہمیشہ نیچے کی ایک سیریز رہے گا۔مماثل الفاظ، حروف تہجی، ویب سائٹ کے پتے، ای میل آئی ڈی، اور یہاں تک کہ فائل کی قسمیں اور ایکسٹینشنز۔

یہ منظرنامے صارف کے ان پٹس کی اصل وقتی توثیق میں کوڈ کی متعدد لائنیں لکھے بغیر کافی کارآمد ہیں اور اس طرح وقت کی بچت میں مدد کرتے ہیں اور پیچیدگی کو کم کریں. ان مثالوں کا استعمال صارف کی رہنمائی کے لیے کیا گیا ہے کہ وہ اپنے ریگولر ایکسپریشنز کا اپنا سیٹ بنائیں اور اس طرح ان کو کئی دوسرے مختلف منظرناموں سے نمٹنے میں مدد کریں۔

ریجیکس آسان ہو سکتا ہے جیسے کہ حروف تہجی یا ہندسوں کا استعمال پیچیدہ فارمیٹس کی توثیق کرنے یا کریکٹر سیریز میں ایک مخصوص پیٹرن تلاش کرنے کے لیے خصوصی حروف، کوانٹیفائر، کریکٹر کلاسز وغیرہ کے امتزاج کا استعمال کرتے ہوئے حروف یا پیچیدہ۔

مختصر طور پر، ایک باقاعدہ اظہار کافی حد تک ایک پروگرامر کے لیے طاقتور ٹول اور کوڈ کی مقدار کو کم کرنے میں مدد کرتا ہے جو ڈیٹا کی مماثلت یا توثیق کے کام کو پورا کرنے کے لیے درکار ہوتا ہے۔

IsMatch

ریجیکس کلاس میں سب سے آسان اور مفید طریقہ IsMatch طریقہ ہے۔ اس طریقہ کار میں مختلف پیرامیٹرز کی بنیاد پر حروف کی مماثلت کے لیے مختلف اوورلوڈ ہوتے ہیں۔

سب سے آسان ہے

Replace(String text, String replacementText)

تبدیلی کا طریقہ دو کو قبول کرتا ہے۔ پیرامیٹرز اور سٹرنگ ویلیو واپس کرتا ہے۔ پہلا پیرامیٹر کریکٹر کی ترتیب یا ریجیکس ہے جسے آپ میچ کے لیے استعمال کرنا چاہتے ہیں اور دوسرا regex کا متبادل ہے۔

مطلوبہ دیے گئے متن کا ایک مماثل تلاش کرکے کام کرتا ہے اور پھر اس کی جگہ صارف کی طرف سے فراہم کردہ متبادل متن۔ طریقہ دستخط ہے عوامی اسٹرنگ ریپلیس(سٹرنگ ٹیکسٹ، سٹرنگ ریپلیسمنٹ ٹیکسٹ)

پبلک اسٹرنگ[] اسپلٹ(سٹرنگ ٹیکسٹ)

اسپلٹ کا طریقہ ریجیکس کلاس سے سٹرنگ ان پٹ کو پیرامیٹر کے طور پر قبول کرتا ہے اور سبسٹرنگز پر مشتمل ایک صف واپس کرتا ہے۔ طریقہ میں پاس کردہ پیرامیٹر وہ سٹرنگ ہے جس کو تقسیم کرنے کی ضرورت ہے۔

طریقہ اسٹرنگ میں مماثل ان پٹ پیٹرن کو تلاش کرتا ہے اور ایک بار جب یہ کسی بھی مماثل پیٹرن کی نشاندہی کرتا ہے، تو یہ اس جگہ پر موجود سٹرنگ کو اس کے ساتھ چھوٹے سبسٹرنگ میں تقسیم کرتا ہے۔ ہر مماثل پیٹرن بریکنگ پوائنٹ ہے۔ اس کے بعد طریقہ تمام ذیلی اسٹرنگز پر مشتمل ایک صف لوٹاتا ہے۔

Regex C# طریقوں کا استعمال

آئیے ایک سادہ پروگرام لکھ کر ان طریقوں کے استعمال پر ایک نظر ڈالتے ہیں۔

public static void Main(string[] args) { string patternText = "Hello"; Regex reg = new Regex(patternText); //IsMatch(string input) Console.WriteLine(reg.IsMatch("Hello World")); //IsMatch(string input, int index) Console.WriteLine(reg.IsMatch("Hello", 0)); //IsMatch(string input, string pattern) Console.WriteLine(Regex.IsMatch("Hello World", patternText)); //Replace(string input, string replacement) Console.WriteLine(reg.Replace("Hello World", "Replace")); //Split(string input, string pattern) string[] arr = Regex.Split("Hello_World_Today", "_"); foreach(string subStr in arr) { Console.WriteLine("{0}", subStr); } }

اوپر کا آؤٹ پٹپروگرام

True

True

True

Replace World

Hello

World

آج

مندرجہ بالا کوڈ کی وضاحت:

پروگرام کے آغاز میں، ہم نے ایک آبجیکٹ بنایا ہے اور اس پیٹرن کے لیے جسے ہم استعمال کریں گے۔ بعد کے سٹرنگ ان پٹ میں کوڈ کی مماثلت کے لیے، ہم نے شروع میں چیزوں کو سادہ رکھنے کے لیے ٹیکسٹ فارمیٹنگ کا استعمال کیا ہے لیکن اگر آپ آرام سے ہیں تو آپ ریگولر ایکسپریشن پیٹرن کا استعمال شروع کر سکتے ہیں۔ (ہم اس ٹیوٹوریل میں آگے بڑھنے کے ساتھ ساتھ ریگولر ایکسپریشن پیٹرن پر تفصیل سے بات کریں گے)

پھر، ہم اس فیکٹر کو داخل کرنے کے لیے میچ سٹرنگ کا استعمال کریں گے جسے ہم نے ان پٹ سٹرنگ کے ساتھ مخصوص آبجیکٹ کے طور پر قرار دیا ہے اور اگر یہ میل کھاتا ہے۔ پھر یہ غلط پر واپس آجائے گا۔

اگلا طریقہ جو ہم نے استعمال کیا ہے isMethod(string input, int index)۔ یہ طریقہ دو پیرامیٹر کو قبول کرتا ہے، اور یہاں ہم ان پٹ سٹرنگ اور انڈیکس فراہم کرتے ہیں جہاں سے میچ شروع ہونا ہے۔ 1 یہاں ہم نے ان پٹ سٹرنگ فراہم کی پھر ہم یہ معلوم کرنا چاہتے تھے کہ پیٹرن ٹیکسٹ ان پٹ میں موجود ہے یا نہیں۔ اگر یہ موجود ہے تو یہ درست ہو جائے گا (جیسا کہ ہمارے معاملے میں) ورنہ یہ غلط ہو جائے گا۔

ایک اور طریقہ جس پر ہم نے تبادلہ خیال کیا ہے اسے تبدیل کر دیا گیا ہے۔ یہ طریقہ ان پروگراموں میں کافی مفید ہے جہاں آپ ان پٹ ڈیٹا میں تبدیلیاں کرنا چاہتے ہیں۔یا موجودہ ڈیٹا کا فارمیٹ تبدیل کریں۔

یہاں ہم دو پیرامیٹرز فراہم کرتے ہیں، پہلا ان پٹ سٹرنگ ہے اور دوسرا وہ سٹرنگ ہے جسے پچھلی سٹرنگ کو تبدیل کرنے کے لیے استعمال کیا جا سکتا ہے۔ یہ طریقہ ریجیکس آبجیکٹ میں بیان کردہ پیٹرن کو بھی استعمال کرتا ہے جس کی وضاحت ہم نے پہلے کی ہے۔

ایک اور اہم طریقہ جو ہم نے استعمال کیا، وہ ہے تقسیم۔ یہ طریقہ کچھ بار بار چلنے والے نمونوں کی بنیاد پر دی گئی سٹرنگ کو تقسیم کرنے کے لیے استعمال کیا جاتا ہے۔ یہاں، ہم نے ایک سٹرنگ "Hello_World_Today" فراہم کی ہے۔

آئیے کہتے ہیں کہ ہم دی گئی اسٹرنگ سے انڈر سکور کو ہٹانا چاہتے ہیں اور ذیلی اسٹرنگ حاصل کرنا چاہتے ہیں۔ اس کے لیے، ہم ان پٹ پیرامیٹر کی وضاحت کرتے ہیں اور پھر ہم وہ پیٹرن دیتے ہیں جسے ہمیں اسپلٹنگ پوائنٹ کے طور پر استعمال کرنے کی ضرورت ہے۔ یہ طریقہ ایک صف کو لوٹاتا ہے اور ہم تمام سٹرنگز کو بازیافت کرنے کے لیے foreach کی طرح ایک سادہ لوپ استعمال کر سکتے ہیں۔

ریگولر ایکسپریشن سنٹیکس

کئی مختلف نحو ہیں جیسے خصوصی حروف، کوانٹیفائر، کریکٹر کلاسز، وغیرہ جو دیے گئے ان پٹ سے کسی خاص پیٹرن کو ملانے کے لیے استعمال کیے جاسکتے ہیں۔

ٹیوٹوریل کے اس حصے میں، ہم ریجیکس کے ذریعہ پیش کردہ نحو کی گہرائی میں جائیں گے اور کچھ حقیقی زندگی کے منظرناموں کو حل کرنے کی کوشش کریں گے۔ ان کا استعمال کرتے ہوئے. اس سے پہلے کہ ہم آگے بڑھیں، اس بات کو یقینی بنائیں کہ آپ نے regex کا بنیادی خیال اور regex کلاس کے اندر دستیاب مختلف طریقوں کو حاصل کر لیا ہے۔

خصوصی کریکٹر

ریجیکس میں خصوصی حروف کو کئی مختلف معنی تفویض کرنے کے لیے استعمال کیا جاتا ہے۔ ایک پیٹرن پر. اب ہم دیکھیں گے۔Regex.3

خصوصی حروف معنی
میں بڑے پیمانے پر استعمال ہونے والے کچھ خاص حروف اور ان کے معنی ^ یہ سب سے زیادہ استعمال ہونے والے نحو میں سے ایک ہے۔ یہ ان پٹ ٹیکسٹ کے آغاز سے مماثل ہونے کے بعد شروع، لفظ یا پیٹرن کی نشاندہی کرتا ہے۔
$ یہ نشان آخر سے الفاظ کے ملاپ کے لیے استعمال ہوتا ہے۔ تار کے. اس علامت سے پہلے بیان کردہ الفاظ/ پیٹرن سٹرنگ کے آخر میں موجود الفاظ سے مماثل ہوں گے۔
۔ (ڈاٹ) ڈاٹ کا استعمال دی گئی سٹرنگ میں ایک بار ہونے والے ایک حرف کو ملانے کے لیے کیا جاتا ہے۔
\n یہ ایک نئے کے لیے استعمال ہوتا ہے۔ لائن۔
\d اور \D لوئر کیس 'd' کو ہندسوں کے کریکٹر سے ملنے کے لیے استعمال کیا جاتا ہے اور اپر کیس 'D' کو غیر ہندسے سے ملنے کے لیے استعمال کیا جاتا ہے حروف۔
\s اور \S لوئر کیس 's' کو سفید خالی جگہوں سے مماثل کرنے کے لیے استعمال کیا جاتا ہے اور بڑے کیس 'S' کو غیر سفید جگہ سے ملنے کے لیے استعمال کیا جاتا ہے۔ .
\w اور \W لوئر کیس 'w' کا استعمال حروفِ عددی/انڈر سکور حروف سے مماثل کرنے کے لیے کیا جاتا ہے اور بالائی صورت 'W' غیر لفظ سے ملنے کے لیے استعمال ہوتا ہے۔ حروف۔

Quantifier Syntax

کوانٹیفائر نحو کو مماثل معیار کو شمار کرنے یا مقدار درست کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، اگر آپ یہ چیک کرنا چاہتے ہیں کہ آیا کسی خاص سٹرنگ میں ایک یا زیادہ بار حروف تہجی شامل ہیں۔ آئیے ریگولر ایکسپریشن میں عام طور پر استعمال ہونے والے کچھ کوانٹیفائرز پر ایک نظر ڈالتے ہیں۔

کوانٹیفائرنحو مطلب
* یہ علامت پچھلے حروف سے ملنے کے لیے استعمال ہوتی ہے۔
+ یہ علامت ایک قطار میں ایک یا زیادہ حروف کو ملانے کے لیے استعمال ہوتی ہے۔
{n} گھنگھریالے کے اندر عددی ہندسہ منحنی خطوط وحدانی کو گھوبگھرالی منحنی خطوط وحدانی کے اندر عددی کے ذریعہ متعین کردہ پچھلے حروف کی تعداد سے مماثل کرنے کے لئے استعمال کیا جاتا ہے۔
{n,} کرلی منحنی خطوط وحدانی کے اندر کا ہندسہ اور یہ علامت استعمال ہوتی ہے۔ اس بات کو یقینی بنانے کے لیے کہ یہ کم از کم n سے میل کھاتا ہے (یعنی منحنی خطوط وحدانی کے اندر عددی قدر)۔
{n, m} یہ علامت پچھلے حرف سے مماثلت کے لیے استعمال ہوتی ہے۔ n اوقات کی تعداد سے m بار کی تعداد۔
؟ یہ علامت پچھلے حروف کو اختیاری کے طور پر مماثل بناتی ہے۔

کریکٹر کلاس

کریکٹر کلاس کو کریکٹر سیٹ کے نام سے بھی جانا جاتا ہے، اور اس کا استعمال ریجیکس انجن کو یہ بتانے کے لیے کیا جاتا ہے کہ وہ کئی حروف میں سے ایک میچ تلاش کرے۔ کریکٹر کلاس صرف ایک کریکٹر سے مماثل ہوگی اور کریکٹر سیٹ کے اندر بند حروف کی ترتیب سے کوئی فرق نہیں پڑتا ہے۔

کریکٹر کلاس مطلب
[ رینج ] اسکوائر بریکٹ کی علامت حروف کی ایک رینج سے ملنے کے لیے استعمال ہوتی ہے۔ مثال کے طور پر، ہم اس کا استعمال حروف تہجی سے لے کر "z" کی حد میں کسی بھی حرف کی وضاحت کرنے کے لیے کر سکتے ہیں جیسے [a-z]

کے اندر رینج کو بند کر کے، یا، ہم عددی "1" سے "" کے ساتھ بھی ملا سکتے ہیں۔ 9" کی نشاندہی کرکےکچھ ریئل ٹائم مثالوں کا استعمال کرتے ہوئے اظہار۔

منظر نامہ 1: تصدیق کریں کہ آیا ان پٹ سٹرنگ 6 ہندسوں کے حروف تہجی کے غیر حساس حروف پر مشتمل ہے۔

باقاعدہ اظہار کا سب سے عام منظر نامہ کسی لفظ کو تلاش کرنا اور ملانا ہے۔ 1 آئیے ریگولر ایکسپریشن لکھنے اور استعمال کو بہتر طریقے سے سمجھنے کے لیے ایک پروگرام لکھیں۔

public static void Main(string[] args) { string patternText = @"^[a-zA-Z]{6}$"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("Helios")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("Helo")); }

آؤٹ پٹ

True

False

0 وضاحت

اس مثال میں، ہم ایک ان پٹ سٹرنگ کو درست کرنے کی کوشش کر رہے ہیں، یہ چیک کرنے کے لیے کہ آیا اس میں چھ ہندسوں کے حروف تہجی کے حروف ہیں۔ حروف لوئر اور اپر کیس دونوں میں ہو سکتے ہیں، اس لیے ہمیں اس کا بھی خیال رکھنا ہوگا۔

لہذا، یہاں ہم نے متغیر "patternText" میں ریگولر ایکسپریشن پیٹرن کی وضاحت کی اور پھر اسے ریجیکس آبجیکٹ میں منتقل کیا۔ . اب، کوڈ کی اگلی لائنیں بہت آسان ہیں، ہم نے ریگولر ایکسپریشن اور ان پٹ سٹرنگ کا موازنہ کرنے کے لیے IsMatch طریقہ استعمال کیا۔

آئیے اب اس ریگولر ایکسپریشن پر ایک نظر ڈالتے ہیں جو ہم نے وضع کیا ہے۔ اظہار (^[a-zA-Z]{6}$) 4 مختلف حصوں سے بنا ہے۔ "^"، "[a-zA-Z]"، "{6}" اور "$"۔ دوسرا حصہ مماثل حروف کو ظاہر کرتا ہے، جو اظہار کی مماثلت کو انجام دینے کے لیے استعمال ہوتا ہے، چھوٹے حروف کے لیے "a-z" اور بڑے حروف کے لیے "A-Z"۔

پہلاپارٹ کریکٹر "^" اس بات کو یقینی بناتا ہے کہ سٹرنگ دوسرے حصے میں بیان کردہ پیٹرن کے ساتھ شروع ہوتی ہے یعنی لوئر اور اپر کیس حروف تہجی۔

تیسرے حصے میں گھوبگھرالی منحنی خطوط وحدانی اسٹرنگ میں حروف کی تعداد کا تعین کرتے ہیں جن کی شناخت کی جا سکتی ہے۔ متعین پیٹرن کے ذریعے یعنی اس معاملے میں 6 اور "$" علامت اس بات کو یقینی بنائیں کہ یہ دوسرے حصے میں بیان کردہ پیٹرن کے ساتھ ختم ہو۔

^[a-zA-Z]{6}$

منظر نامہ 2: اس بات کی توثیق کرنے کے لیے ریگولر ایکسپریشن کا استعمال کریں کہ ایک لفظ جو "Super" سے شروع ہوتا ہے اور اس کے بعد سفید جگہ ہوتی ہے یعنی اس بات کی توثیق کرنے کے لیے کہ آیا "Super" کسی جملے کے شروع میں موجود ہے۔ 3

آئیے ایک نمونہ پروگرام دیکھیں اور پھر اس اظہار کو لکھنے کے طریقہ پر تفصیل سے بات کریں۔

 public static void Main(string[] args) { string patternText = @"^Super\s"; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch("Super man")); //When pattern doesnt match Console.WriteLine(reg.IsMatch("Superhero")); }

آؤٹ پٹ2

True

False

وضاحت

اس مثال میں بھی، ہم نے اسی طرح کا کوڈ سیٹ اپ استعمال کیا جیسا کہ ہم نے کیا تھا۔ پہلا. اس منظر نامے میں ریگولر ایکسپریشن پیٹرن کے لیے الفاظ یا جملوں کے مجموعے سے مماثلت کی ضرورت ہوتی ہے جو "Super" سے شروع ہوتے ہیں۔

^Super

لہذا، جیسا کہ ہم لفظ کے آغاز سے میچ کرنا چاہتے ہیں۔ سیریز، ہم "^" علامت ڈال کر شروع کریں گے، پھر وہ پیٹرن دیں گے جو ہم میچ کرنا چاہتے ہیں، اس معاملے میں، "Super"۔ اب پیٹرن[1-9]

[^ رینج] یہ نفی کریکٹر کلاس کو ظاہر کرتا ہے۔ اس کا استعمال کسی بھی چیز سے ملنے کے لیے کیا جاتا ہے، نہ کہ بریکٹ کے اندر ظاہر کردہ رینج میں۔
\ اس کا استعمال ان خاص حروف سے ملنے کے لیے کیا جاتا ہے جن کی اپنی ریجیکس علامتیں ہوسکتی ہیں۔ سلیش کا استعمال خصوصی حروف کو ان کی لغوی شکل میں ملانے کے لیے کیا جاتا ہے۔

گروپ بندی

گول بریکٹ یا قوسین کو ریگولر کے ایک حصے کو گروپ کرنے کے لیے استعمال کیا جا سکتا ہے۔ ایک ساتھ اظہار. یہ صارف کو یا تو اظہار کے ساتھ کوانٹیفائر شامل کرنے کی اجازت دیتا ہے۔

گروپنگ مطلب
( گروپ ایکسپریشن ) گول بریکٹ ایک اظہار کی گروپ بندی کے لیے استعمال ہوتے ہیں۔
حروف اس طرح علامت "+" استعمال کریں گے۔ ان کو یکجا کریں اور ہمیں پہلے حصے کی علامت ملے گی۔
(\w+)

بریکٹ نے اسے حصوں میں الگ کر دیا ہے۔ اگلا حصہ ڈاٹ کی علامت ہے۔ جیسا کہ ڈاٹ کی علامت ریجیکس میں اپنے معنی رکھتی ہے، اس لیے ہم اسے لفظی معنی دینے کے لیے اس سے پہلے بیک سلیش استعمال کریں گے۔ دونوں کو یکجا کریں اور ہمارے پاس ریجیکس کے پہلے دو حصے شامل ہیں۔

(\w+)\.

اب، تیسرے اور آخری حصے کے لیے، ہم براہ راست مطلوبہ فائل ایکسٹینشن کی وضاحت کر سکتے ہیں جو "کیس حروف تہجی کے حروف اگر آپ چاہیں تو آپ عددی یا بڑے حروف تہجی کے حروف بھی شامل کر سکتے ہیں لیکن اس منظر نامے کے لیے، ہم چھوٹے حروف تہجی کے ساتھ جائیں گے۔

اگر ہم چھوٹے حروف تہجی کے لیے 2 سے 12 حروف کی لمبائی کے ساتھ اظہار شامل کریں، پھر ہمارے پاس مندرجہ ذیل ایکسپریشن ہوگا۔

^[a-zA-Z0-9\._-]{5,25}.@.[a-z]{2,12}

اب، ہمارے پاس صرف ڈومین ایکسٹینشن کا اظہار رہ گیا ہے، چوتھے منظر نامے کی طرح، ہم کچھ مخصوص ڈومین ایکسٹینشن کو ہینڈل کریں گے۔ اگر آپ چاہیں تو آپ ان کو سرکلر بریکٹ کے اندر بند کرکے اور انہیں "

اوپر سکرول کریں