فہرست کا خانہ
اس ٹیوٹوریل میں، آپ سیکھیں گے کہ ایکسل میں کسی مخصوص پیٹرن سے مماثل ذیلی اسٹرنگز تلاش کرنے اور نکالنے کے لیے ریگولر ایکسپریشنز کا استعمال کیسے کیا جاتا ہے۔
Microsoft Excel متن کو نکالنے کے لیے متعدد فنکشن فراہم کرتا ہے۔ خلیات سے. وہ فنکشنز آپ کی ورک شیٹس میں سٹرنگ نکالنے کے زیادہ تر چیلنجوں سے نمٹ سکتے ہیں۔ زیادہ تر، لیکن سب نہیں۔ جب متن کے افعال ٹھوکر کھاتے ہیں، تو باقاعدہ اظہار بچاؤ کے لیے آتا ہے۔ انتظار کریں… ایکسل میں کوئی RegEx فنکشن نہیں ہے! سچ ہے، کوئی ان بلٹ فنکشن نہیں ہے۔ لیکن ایسی کوئی چیز نہیں ہے جو آپ کو اپنے استعمال کرنے سے روکے :)
سٹرنگز نکالنے کے لیے ایکسل VBA ریجیکس فنکشن
اپنے ایکسل میں اپنی مرضی کے مطابق ریجیکس ایکسٹریکٹ فنکشن شامل کرنے کے لیے، مندرجہ ذیل کوڈ کو VBA ایڈیٹر میں چسپاں کریں۔ VBA میں ریگولر ایکسپریشنز کو فعال کرنے کے لیے، ہم بلٹ ان Microsoft RegExp آبجیکٹ استعمال کر رہے ہیں۔
پبلک فنکشن RegExpExtract(text as String، pattern as String، Optional instance_num As Integer = 0، Optional match_case As Boolean = True) مدھم text_matches() As String Dim matches_index as Integer On Error GoTo ErrHandl RegExpExtract = "" سیٹ regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = پیٹرن regex.Global = True regex.MultiLine = True_ex پھر سے میچ۔ ignorecase = غلط ورنہ regex.ignorecase = درست اختتام اگر سیٹ میچز = regex.Execute(text) اگر 0 < matches.Count پھر If (0 = instance_num) پھر text_maches (matches.Count - 1, 0) ReDim کریں matches_index = 0 کے لیےVBA RegExp، میں آپ کو اگلا حصہ پڑھنے کی ترغیب دیتا ہوں جس میں بہت زیادہ طاقتور .NET Regex فنکشنز پر بحث کی گئی ہے۔ایکسل میں ٹیکسٹ نکالنے کے لیے اپنی مرضی کے مطابق .NET پر مبنی Regex فنکشن
VBA RegExp فنکشنز کے برعکس جو کسی بھی ایکسل صارف کے ذریعے لکھا جا سکتا ہے، .NET RegEx ڈویلپر کا دائرہ ہے۔ مائیکروسافٹ .NET فریم ورک مکمل خصوصیات والے ریگولر ایکسپریشن نحو کی حمایت کرتا ہے جو پرل 5 کے ساتھ مطابقت رکھتا ہے۔ یہ مضمون آپ کو یہ نہیں سکھائے گا کہ اس طرح کے فنکشنز کیسے لکھے جائیں (میں پروگرامر نہیں ہوں اور مجھے اس کے بارے میں ذرا سا بھی اندازہ نہیں ہے کہ یہ کیسے کیا جائے :)
0 ذیل میں، ہم فنکشن کے کچھ عملی استعمال کا مظاہرہ کریں گے جو خاص طور پر ایکسل میں ٹیکسٹ نکالنے کے لیے ڈیزائن کیا گیا ہے۔ٹپ۔ .NET Regex نحو کے بارے میں معلومات کے لیے، براہ کرم .NET ریگولر ایکسپریشن لینگویج سے رجوع کریں۔
ایکسل میں ریگولر ایکسپریشنز کا استعمال کرتے ہوئے ڈنک کیسے نکالیں
یہ فرض کرتے ہوئے کہ آپ کے پاس الٹیمیٹ سویٹ کا تازہ ترین ورژن انسٹال ہے، ریگولر ایکسپریشنز کا استعمال کرتے ہوئے ٹیکسٹ کو نکالنا ان دو مراحل پر آتا ہے:
- Ablebits Data ٹیب پر، Text گروپ میں، Regex Tools پر کلک کریں۔
- Regex Tools پین پر، سورس ڈیٹا کو منتخب کریں، اپنا Regex پیٹرن درج کریں، اور Extract آپشن کو منتخب کریں۔ نتیجہ ایک حسب ضرورت فنکشن کے طور پر حاصل کرنے کے لیے، قدر کے نہیں، منتخب کریں ایک فارمولہ کے طور پر داخل کریں چیک کریںڈبہ. جب ہو جائے تو، Extract بٹن پر کلک کریں۔
نتائج آپ کے اصل ڈیٹا کے دائیں جانب ایک نئے کالم میں ظاہر ہوں گے:
AblebitsRegexExtract syntax
ہمارے حسب ضرورت فنکشن میں درج ذیل نحو ہے: 3 Regular_expression (ضرورت ہے) - مماثل ریجیکس پیٹرن۔
اہم نوٹ! فنکشن صرف ان مشینوں پر کام کرتا ہے جن میں ایکسل کے لیے الٹیمیٹ سویٹ انسٹال ہے۔
استعمال نوٹ
اپنے سیکھنے کے منحنی خطوط کو ہموار بنانے اور آپ کے تجربے کو مزید خوشگوار بنانے کے لیے، براہ کرم ان نکات پر توجہ دیں:
- فارمولہ بنانے کے لیے، آپ ہمارے Regex Tools ، یا Excel کا Insert function ڈائیلاگ استعمال کرسکتے ہیں، یا سیل میں مکمل فنکشن کا نام ٹائپ کرسکتے ہیں۔ فارمولہ داخل ہونے کے بعد، آپ کسی مقامی فارمولے کی طرح اس کا نظم کر سکتے ہیں (ترمیم، کاپی یا منتقل) ایک الگ سیل میں باقاعدہ اظہار رکھنا بھی ممکن ہے۔ اس صورت میں، صرف دوسری دلیل کے لیے سیل کا حوالہ استعمال کریں۔
- فنکشن پہلا ملا میچ نکالتا ہے۔
- بطور ڈیفالٹ، فنکشن کیس ہے حساس ۔ کیس غیر حساس مماثلت کے لیے، (؟i) پیٹرن استعمال کریں۔
- اگر کوئی مماثلت نہیں ملتی ہے، تو #N/A خرابی ہےواپس آیا۔
دو حروف کے درمیان سٹرنگ نکالنے کے لیے Regex
دو حروف کے درمیان متن حاصل کرنے کے لیے، آپ یا تو کیپچر کرنے والے گروپ کا استعمال کر سکتے ہیں یا ارد گرد تلاش کر سکتے ہیں۔
آئیے کہتے ہیں کہ آپ بریکٹ کے درمیان متن نکالنا چاہتے ہیں۔ ایک کیپچرنگ گروپ سب سے آسان طریقہ ہے۔
پیٹرن 1 : \[(.*?)\]
پیچھے اور آگے دیکھنے کے ساتھ، نتیجہ بالکل ٹھیک ہوگا۔ وہی۔
پیٹرن 2 : (?<=\[)(.*?)(?=\])
براہ کرم توجہ دیں کہ ہمارا کیپچرنگ گروپ (.*؟) دو بریکٹ کے درمیان متن کے لیے سست تلاش کرتا ہے - پہلے [ سے پہلے] تک۔ سوالیہ نشان کے بغیر کیپچر کرنے والا گروپ ( ) لالچی تلاش کرے گا اور پہلے [ سے آخری ] تک ہر چیز کو حاصل کرے گا۔
A2 میں پیٹرن کے ساتھ، فارمولہ اس طرح جاتا ہے مندرجہ ذیل ہے:
=AblebitsRegexExtract(A5, $A$2)
تمام میچ کیسے حاصل کیے جائیں
جیسا کہ پہلے ہی ذکر کیا گیا ہے، AblebitsRegexExtract فنکشن صرف ایک میچ نکال سکتا ہے۔ تمام میچز حاصل کرنے کے لیے، آپ VBA فنکشن استعمال کر سکتے ہیں جس پر ہم نے پہلے بات کی ہے۔ تاہم، ایک انتباہ ہے - VBA RegExp گروپوں کو کیپچر کرنے کی حمایت نہیں کرتا ہے، اس لیے اوپر والا پیٹرن "باؤنڈری" حروف کو بھی واپس کرے گا، ہمارے معاملے میں بریکٹ۔
=TEXTJOIN(" ", TRUE, RegExpExtract(A5, $A$2))
چھٹکارا حاصل کرنے کے لیے بریکٹ میں سے، اس فارمولے کا استعمال کرتے ہوئے انہیں خالی سٹرنگز ("") سے تبدیل کریں:
=SUBSTITUTE(SUBSTITUTE(TEXTJOIN(", ", TRUE, RegExpExtract(A5, $A$2)), "]", ""),"[","")
بہتر پڑھنے کی اہلیت کے لیے، ہم حد بندی کے لیے کوما استعمال کر رہے ہیں۔
دو تاروں کے درمیان متن کو نکالنے کے لیے ریجیکس
جس طریقہ کار پر ہم نے کام کیا ہےاس کی لفظی تشریح کریں۔
اس بات پر منحصر ہے کہ A2 میں کون سا ریگولر ایکسپریشن درج کیا گیا ہے، ذیل کا فارمولا مختلف نتائج پیدا کرے گا:
=AblebitsRegexExtract(A5, $A$2)
تمام ذیلی ڈومینز کے ساتھ مکمل ڈومین کا نام نکالنے کے لیے Regex:
دوسرے درجے کے ڈومین کو بغیر ذیلی ڈومین کے نکالنے کے لیے: 0 میں پڑھنے کے لیے آپ کا شکریہ ادا کرتا ہوں اور اگلے ہفتے آپ کو ہمارے بلاگ پر دیکھنے کا منتظر ہوں!
دستیاب ڈاؤن لوڈز
Excel Regex Extract مثالیں (.xlsm فائل)
Ultimate Suite آزمائشی ورژن (.exe فائل)
\b(0؟[0-9]matches.Count - 1 text_maches(matches_index, 0) = matches.Item(matches_index) اگلا matches_index RegExpExtract = text_maches ورنہ RegExpExtract = matches.Item(instance_num - 1) End If End If Exit Function: RegExl EndFunction ErrrxEndExlErrxاگر آپ کو VBA کا تھوڑا سا تجربہ ہے، تو قدم بہ قدم صارف گائیڈ مددگار ثابت ہو سکتا ہے: ایکسل میں VBA کوڈ کیسے داخل کریں۔
نوٹ۔ فنکشن کے کام کرنے کے لیے، اپنی فائل کو میکرو فعال ورک بک (.xlsm) کے طور پر محفوظ کرنا یقینی بنائیں۔
RegExpExtract نحو
RegExpExtract فنکشن ان اقدار کے لیے ایک ان پٹ سٹرنگ تلاش کرتا ہے جو ایک ریگولر ایکسپریشن سے میل کھاتا ہے اور ایک یا تمام میچ نکالتا ہے۔
فنکشن میں درج ذیل نحو ہے :
RegExpExtract(text, pattern, [instance_num], [match_case])کہاں:
- Text (ضروری) - تلاش کرنے کے لیے ٹیکسٹ اسٹرنگ۔
- پیٹرن (مطلوبہ) - ملنے کے لیے ریگولر ایکسپریشن۔ فارمولے میں براہ راست فراہم کیے جانے پر، پیٹرن کو ڈبل کوٹیشن مارکس میں بند کیا جانا چاہیے۔
- Instance_num (اختیاری) - ایک سیریل نمبر جو اس بات کی نشاندہی کرتا ہے کہ کون سی مثال نکالنی ہے۔ اگر چھوڑ دیا جائے تو تمام پائے گئے مماثلتیں (پہلے سے طے شدہ) لوٹاتا ہے۔
- Match_case (اختیاری) - اس بات کی وضاحت کرتا ہے کہ آیا ٹیکسٹ کیس کو میچ کرنا ہے یا نظر انداز کرنا ہے۔ اگر TRUE یا چھوڑ دیا گیا (پہلے سے طے شدہ)، کیس حساس مماثلت انجام دی جاتی ہے۔ اگر غلط - کیس غیر حساس۔
فنکشن Excel 365, Excel 2021, Excel کے تمام ورژن میں کام کرتا ہے۔2019, Excel 2016, Excel 2013 اور Excel 2010.
4 چیزیں جو آپ کو RegExpExtract کے بارے میں معلوم ہونی چاہئیں
اپنے ایکسل میں فنکشن کو مؤثر طریقے سے استعمال کرنے کے لیے، چند اہم چیزوں کا نوٹس لینا ضروری ہے:
- بطور ڈیفالٹ، فنکشن تمام پائے گئے میچز کو پڑوسی سیلز میں لوٹاتا ہے جیسا کہ اس مثال میں دکھایا گیا ہے۔ ایک مخصوص واقعہ حاصل کرنے کے لیے، instance_num دلیل کو ایک متعلقہ نمبر فراہم کریں۔
- بطور ڈیفالٹ، فنکشن کیس حساس ہے۔ کیس غیر حساس مماثلت کے لیے، match_case دلیل کو FALSE پر سیٹ کریں۔ VBA کی حدود کی وجہ سے، کیس غیر حساس تعمیر (؟i) کام نہیں کرے گی۔
- اگر درست پیٹرن نہیں ملتا ہے ، تو فنکشن کچھ نہیں لوٹاتا ہے (خالی سٹرنگ)۔
- اگر پیٹرن غلط ہے ، ایک #VALUE! غلطی ہوتی ہے۔
اس سے پہلے کہ آپ اپنی ورک شیٹس میں اس کسٹم فنکشن کا استعمال شروع کریں، آپ کو یہ سمجھنا ہوگا کہ یہ کس قابل ہے، ٹھیک ہے؟ ذیل کی مثالیں عام استعمال کے چند معاملات کا احاطہ کرتی ہیں اور یہ بتاتی ہیں کہ ڈائنامک اری ایکسل (مائیکروسافٹ 365 اور ایکسل 2021) اور روایتی ایکسل (2019 اور پرانے ورژن) میں برتاؤ کیوں مختلف ہو سکتا ہے۔
نوٹ۔ آؤٹ ریجیکس مثالیں پری سادہ ڈیٹا سیٹ کے لیے لکھی جاتی ہیں۔ ہم اس بات کی ضمانت نہیں دے سکتے کہ وہ آپ کی حقیقی ورک شیٹس میں بے عیب کام کریں گے۔ جو لوگ ریجیکس کے ساتھ تجربہ رکھتے ہیں وہ اس بات سے اتفاق کریں گے کہ باقاعدہ تاثرات لکھنا کمال کی طرف کبھی نہ ختم ہونے والا راستہ ہے - تقریباً ہمیشہ ایک طریقہ ہوتا ہےیہ زیادہ خوبصورت یا ان پٹ ڈیٹا کی وسیع رینج کو سنبھالنے کے قابل ہے۔
سٹرنگ سے نمبر نکالنے کے لیے ریجیکس
"سادہ سے پیچیدہ تک" پڑھانے کے بنیادی اصول پر عمل کرتے ہوئے، ہم ایک سادہ کیس کے ساتھ شروع کریں گے: سٹرنگ سے نمبر نکالنا۔
The آپ کے لیے سب سے پہلے یہ فیصلہ کرنا ہے کہ کون سا نمبر بازیافت کرنا ہے: پہلا، آخری، مخصوص واقعہ یا تمام نمبر۔
پہلا نمبر نکالیں
یہ اتنا ہی آسان ہے جتنا ریجیکس حاصل کرسکتا ہے۔ یہ دیکھتے ہوئے کہ \d کا مطلب 0 سے 9 تک کوئی بھی ہندسہ ہے، اور + کا مطلب ہے ایک یا زیادہ بار، ہمارا ریگولر ایکسپریشن یہ شکل اختیار کرتا ہے:
پیٹرن : \d+
سیٹ instance_num to 1 اور آپ کو مطلوبہ نتیجہ ملے گا:
=RegExpExtract(A5, "\d+", 1)
جہاں A5 اصل سٹرنگ ہے۔
سہولت کے لیے، آپ ان پٹ کر سکتے ہیں۔ پہلے سے طے شدہ سیل ($A$2 ) میں پیٹرن اور اس کے ایڈریس کو $ کے نشان کے ساتھ لاک کریں:
=RegExpExtract(A5, $A$2, 1)
آخری نمبر حاصل کریں
سٹرنگ میں آخری نمبر نکالنے کے لیے ، یہاں استعمال کرنے کا پیٹرن ہے:
پیٹرن : (\d+)(?!.*\d)
انسانی زبان میں ترجمہ کیا گیا ، یہ کہتا ہے: ایک ایسا نمبر تلاش کریں جس کی پیروی نہ کی گئی ہو (کہیں بھی، نہ صرف فوری طور پر) کسی دوسرے نمبر سے۔ اس کا اظہار کرنے کے لیے، ہم ایک منفی نظر کا استعمال کر رہے ہیں (؟!.*\d)، جس کا مطلب ہے کہ پیٹرن کے دائیں جانب کوئی دوسرا ہندسہ (\d) نہیں ہونا چاہیے چاہے اس سے پہلے کتنے ہی دوسرے حروف ہوں۔<3
=RegExpExtract(A5, "(\d+)(?!.*\d)")
تجاویز:
- مخصوص وقوعہ حاصل کرنے کے لیے، پیٹرن کے لیے \d+ اور ایک مناسب سیریل استعمال کریں۔ instance_num کے لیے نمبر۔
- تمام نمبرز کو نکالنے کے فارمولے پر اگلی مثال میں بحث کی گئی ہے۔
تمام مماثلتیں نکالنے کے لیے Regex
ہماری مثال کو تھوڑا آگے بڑھاتے ہوئے، فرض کریں کہ آپ تمام نمبرز کو ایک تار سے حاصل کرنا چاہتے ہیں، نہ کہ صرف ایک۔
جیسا کہ آپ کو یاد ہوگا، نکالے گئے میچوں کی تعداد اختیاری <1 کے ذریعے کنٹرول کی جاتی ہے۔>instance_num دلیل۔ پہلے سے طے شدہ تمام مماثلتیں ہیں، لہذا آپ صرف اس پیرامیٹر کو چھوڑ دیتے ہیں:
=RegExpExtract(A2, "\d+")
فارمولہ ایک سیل کے لیے خوبصورتی سے کام کرتا ہے، لیکن طرز عمل Dynamic Array Excel اور غیر متحرک ورژن میں مختلف ہے۔
Excel 365 اور Excel 2021
متحرک صفوں کو سپورٹ کرنے کی وجہ سے، ایک باقاعدہ فارمولہ خود بخود زیادہ سے زیادہ سیلز میں پھیل جاتا ہے جتنا کہ تمام حسابی نتائج کو ظاہر کرنے کے لیے ضروری ہے۔ ایکسل کے لحاظ سے، اسے اسپلڈ رینج کہا جاتا ہے:
Excel 2019 اور اس سے کم
پری ڈائنامک Excel میں، اوپر والا فارمولا صرف ایک میچ واپس کرے گا۔ متعدد مماثلتیں حاصل کرنے کے لیے، آپ کو اسے ایک صف کا فارمولا بنانا ہوگا۔ اس کے لیے سیلز کی ایک رینج منتخب کریں، فارمولہ ٹائپ کریں، اور اسے مکمل کرنے کے لیے Ctrl + Shift + Enter دبائیں۔
اس نقطہ نظر کا ایک منفی پہلو "اضافی خلیات" میں ظاہر ہونے والی #N/A غلطیوں کا ایک گروپ ہے۔ . افسوس کے ساتھ، اس کے بارے میں کچھ نہیں کیا جا سکتا ہے (افسوس، نہ ہی IFERROR اور نہ ہی IFNA اسے ٹھیک کر سکتے ہیں)۔
تمام مماثلتوں کو ایک سیل میں نکالیں
ڈیٹا کے کالم پر کارروائی کرتے وقت، اوپر کا طریقہ ظاہر ہے کام نہیں کرے گا۔ اس صورت میں، ایک مثالی حلتمام میچز کو ایک ہی سیل میں واپس کر دیا جائے گا۔ اسے مکمل کرنے کے لیے، RegExpExtract کے نتائج کو TEXTJOIN فنکشن میں پیش کریں اور انہیں اپنی پسند کے کسی بھی حد بندی کے ساتھ الگ کریں، کوما اور اسپیس بولیں:
=TEXTJOIN(", ", TRUE, RegExpExtract(A5, "\d+"))
نوٹ۔ چونکہ TEXTJOIN فنکشن صرف Microsoft 365، Excel 2021 اور Excel 2019 کے لیے Excel میں دستیاب ہے، اس لیے فارمولہ پرانے ورژنز میں کام نہیں کرے گا۔
سٹرنگ سے متن نکالنے کے لیے Regex
اس سے متن نکالنا ایکسل میں ایک حروف نمبری سٹرنگ کافی مشکل کام ہے۔ ریجیکس کے ساتھ، یہ پائی کی طرح آسان ہو جاتا ہے۔ ہر چیز سے ملنے کے لیے صرف ایک منفی کلاس کا استعمال کریں جو ہندسہ نہیں ہے۔
پیٹرن : [^\d]+
انفرادی سیلز میں سب اسٹرنگ حاصل کرنے کے لیے (سپل رینج) ، فارمولا یہ ہے:
=RegExpExtract(A5, "[^\d]+")
تمام میچوں کو ایک سیل میں آؤٹ پٹ کرنے کے لیے، TEXTJOIN میں RegExpExtract فنکشن کو اس طرح نیسٹ کریں:
=TEXTJOIN("", TRUE, RegExpExtract(A5, "[^\d]+"))
ریجیکس کو سٹرنگ سے ای میل ایڈریس نکالیں
بہت سی مختلف معلومات پر مشتمل اسٹرنگ سے ای میل ایڈریس نکالنے کے لیے، ایک ریگولر ایکسپریشن لکھیں جو ای میل ایڈریس کی ساخت کو نقل کرتا ہے۔
پیٹرن : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}
اس ریجیکس کو توڑنا , ہم یہاں حاصل کرتے ہیں:
- [\w\.\-]+ ایک صارف نام ہے جس میں 1 یا اس سے زیادہ حروف تہجی، انڈر سکور، نقطے اور ہائفن شامل ہو سکتے ہیں۔
- @ علامت
- [A-Za-z0-9\.\-]+ ایک ڈومین نام ہے جس پر مشتمل ہے: بڑے اور چھوٹے حروف، ہندسے، ہائفن اور نقطےذیلی ڈومینز کی)۔ یہاں انڈر سکور کی اجازت نہیں ہے، اس لیے \w کے بجائے 3 مختلف کریکٹر سیٹ (جیسے A-Z a-z اور 0-9) استعمال کیے جاتے ہیں جو کسی بھی حرف، ہندسے یا انڈر سکور سے میل کھاتا ہے۔
- \[A-Za-z ]{2,24} ایک اعلی درجے کا ڈومین ہے۔ ایک نقطے پر مشتمل ہوتا ہے جس کے بعد بڑے اور چھوٹے حروف ہوتے ہیں۔ زیادہ تر اعلیٰ درجے کے ڈومینز 3 حروف لمبے ہوتے ہیں (جیسے .com .org، .edu وغیرہ)، لیکن نظریہ طور پر یہ 2 سے 24 حروف پر مشتمل ہو سکتا ہے (سب سے طویل رجسٹرڈ TLD)۔
یہ فرض کرتے ہوئے کہ سٹرنگ A5 میں ہے اور پیٹرن A2 میں ہے، ای میل ایڈریس نکالنے کا فارمولا یہ ہے:
=RegExpExtract(A5, $A$2)
ای میل سے ڈومین نکالنے کے لیے Regex
جب یہ ای میل ڈومین نکالنے کے لیے آتا ہے، ذہن میں آنے والا پہلا خیال ایک کیپچر کرنے والے گروپ کا استعمال کر کے متن کو تلاش کرنا ہے جو فوری طور پر @ کردار کی پیروی کرتا ہے۔
پیٹرن : @([A-Za-z0) -9\.\-]+\[A-Za-z]{2,24})
اسے ہمارے RegExp فنکشن میں پیش کریں:
=RegExpExtract(A5, "@([A-Za-z0-9\.\-]+\.[A-Za-z]{2,24})")
اور آپ کو یہ نتیجہ ملے گا:
کلاسک ریگولر ایکسپریشنز کے ساتھ، کیپچرنگ گروپ سے باہر کی کوئی بھی چیز نکالنے میں شامل نہیں ہے۔ کوئی نہیں جانتا کہ کیوں VBA RegEx مختلف طریقے سے کام کرتا ہے اور "@" کو بھی پکڑتا ہے۔ اس سے چھٹکارا پانے کے لیے، آپ نتیجہ سے پہلے حرف کو خالی سٹرنگ سے تبدیل کر کے ہٹا سکتے ہیں۔
=REPLACE(RegExpExtract(A5, "@([a-z\d][a-z\d\-\.]*\.[a-z]{2,})", 1, FALSE), 1, 1, "")
فون نمبر نکالنے کے لیے باقاعدہ اظہار
فون نمبرز بہت سے مختلف طریقوں سے لکھا جا سکتا ہے، یہی وجہ ہے کہ سب کے تحت کام کرنے والے حل کے ساتھ آنا ناممکن ہے(\d{4}سٹرنگ سے
تاریخ کو نکالنے کے لیے ایک ریگولر ایکسپریشن اس فارمیٹ پر منحصر ہوتا ہے جس میں تاریخ سٹرنگ کے اندر ظاہر ہوتی ہے۔ مثال کے طور پر:
1/1/21 یا 01/01/2021 جیسی تاریخیں نکالنے کے لیے، ریجیکس ہے: \d{1,2}\/\d{1,2}\/(\d {4}حالات اس کے باوجود، آپ اپنے ڈیٹاسیٹ میں استعمال ہونے والے تمام فارمیٹس کو لکھ سکتے ہیں اور ان سے مماثل ہونے کی کوشش کر سکتے ہیں۔
اس مثال کے لیے، ہم ایک ریجیکس بنانے جا رہے ہیں جو ان فارمیٹس میں سے کسی میں بھی فون نمبر نکالے گا:
(123) 345-6789 (123) 345 6789 (123)3456789 123- 345-6789 | 123.345.6789 123 345 6789 1233456789 |
پیٹرن : \(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b
- پہلا حصہ \(?\d{3} صفر یا ایک ابتدائی قوسین سے ملتا ہے جس کے بعد تین ہندسوں d{3}۔
- [-\. \)]* حصے کا مطلب ہے مربع بریکٹ میں کوئی بھی حرف جو 0 یا اس سے زیادہ بار ظاہر ہوتا ہے: ہائفن، پیریڈ، اسپیس یا بند قوسین۔
- اس کے بعد، ہمارے پاس دوبارہ تین ہندسے ہیں d{3} کوئی ہائفن، پیریڈ یا اسپیس [-\. ]؟ 0 یا 1 بار ظاہر ہوتا ہے۔
- اس کے بعد، چار ہندسوں کا ایک گروپ ہے \d{4}۔
- آخر میں، ایک لفظ کی حد ہے \b اس بات کی وضاحت کرتا ہے کہ ہم ایک فون نمبر ہیں تلاش کرنا بڑی تعداد کا حصہ نہیں ہو سکتا۔
مکمل فارمولہ یہ شکل اختیار کرتا ہے:
=RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")
براہ کرم آگاہ رہیں کہ مندرجہ بالا ریجیکس کچھ واپس کر سکتا ہے غلط مثبت نتائج جیسے کہ 123) 456 7899 یا (123 456 7899۔ نیچے والا ورژن ان مسائل کو حل کرتا ہے۔ تاہم، یہ نحو صرف VBA RegExp فنکشنز میں کام کرتا ہے، کلاسک ریگولر ایکسپریشنز میں نہیں۔
پیٹرن : (\(\d{3}\)دو حروف کے درمیان متن نکالنے کے لیے out دو تاروں کے درمیان متن نکالنے کے لیے بھی کام کرے گا۔
مثال کے طور پر، "ٹیسٹ 1" اور "ٹیسٹ 2" کے درمیان ہر چیز حاصل کرنے کے لیے، درج ذیل ریگولر ایکسپریشن استعمال کریں۔
پیٹرن : ٹیسٹ 1(.*?)ٹیسٹ 2
مکمل فارمولا ہے:
=AblebitsRegexExtract(A5, "test 1(.*?)test 2")
URL سے ڈومین نکالنے کے لیے Regex
یہاں تک کہ ریگولر ایکسپریشنز کے ساتھ، URLs سے ڈومین کے نام نکالنا کوئی معمولی کام نہیں ہے۔ کلیدی عنصر جو اس چال کو انجام دیتا ہے وہ ہے نان کیپچرنگ گروپس۔ اپنے حتمی مقصد پر منحصر ہے، ذیل میں سے کسی ایک کو منتخب کریں۔
ایک مکمل ڈومین نام حاصل کرنے کے لیے بشمول ذیلی ڈومینز
پیٹرن : (?: https؟\: