এক্সেল রেজেক্স: রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিং মেলে

  • এই শেয়ার করুন
Michael Brown

সুচিপত্র

এই টিউটোরিয়ালে, আমরা এক্সেলের স্ট্রিংগুলিকে মেলানোর জন্য কীভাবে রেজেক্স ব্যবহার করতে হয় সে সম্পর্কে গভীরভাবে দেখব৷

যখন আপনাকে একটি পরিসরে একটি নির্দিষ্ট মান খুঁজে বের করতে হবে কক্ষের, আপনি MATCH বা XMATCH ফাংশন ব্যবহার করবেন। একটি কক্ষে একটি নির্দিষ্ট স্ট্রিং খোঁজার সময়, FIND এবং SEARCH ফাংশনগুলি কাজে আসে৷ এবং আপনি কিভাবে জানবেন যে একটি কোষে এমন তথ্য রয়েছে যা একটি প্রদত্ত প্যাটার্নের সাথে মেলে? স্পষ্টতই, রেগুলার এক্সপ্রেশন ব্যবহার করে। কিন্তু বাক্সের বাইরে এক্সেল রেজেক্স সমর্থন করে না! চিন্তার কিছু নেই, আমরা এটাকে বাধ্য করব :)

    এক্সেল VBA Regex ফাংশন স্ট্রিংগুলি মেলানোর জন্য

    যেমন শিরোনাম থেকে এটি বেশ স্পষ্ট, রেগুলার এক্সপ্রেশন ব্যবহার করার জন্য এক্সেলে, আপনাকে নিজের ফাংশন তৈরি করতে হবে। সৌভাগ্যবশত, এক্সেলের ভিবিএ-তে একটি অন্তর্নির্মিত RegExp অবজেক্ট রয়েছে, যা আপনি নীচের মত আপনার কোডে ব্যবহার করতে পারেন:

    পাবলিক ফাংশন RegExpMatch(input_range As Range, pattern As String , Optional match_case As Boolean = True) হিসাবে ভেরিয়েন্ট ডিম arRes() ভেরিয়েন্ট 'অ্যারে হিসাবে ফলাফল সংরক্ষণ করতে Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols দীর্ঘ' উৎস পরিসরে বর্তমান সারির সূচক, উৎস পরিসরে বর্তমান কলামের সূচক, সারিগুলির গণনা, গণনা কলাম অন Error GoTo ErrHandl RegExpMatch = arRes সেট করুন regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = প্যাটার্ন regex.Global = True regex.MultiLine = True যদি True = match_case তারপর regex.True = Elseign. শেষঅভিব্যক্তি।

    প্যাটার্ন : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\। :

    • ব্যবহারকারীর নাম অক্ষর, সংখ্যা, আন্ডারস্কোর, বিন্দু এবং হাইফেন অন্তর্ভুক্ত করতে পারে। মনে রেখে যে \w যেকোনো অক্ষর, অঙ্ক বা আন্ডারস্কোরের সাথে মেলে, আমরা নিম্নলিখিত রেজেক্স পাই: [\w\.\-]+
    • ডোমেন নাম বড় হাতের এবং ছোট হাতের অক্ষর অন্তর্ভুক্ত করতে পারে, সংখ্যা, হাইফেন (কিন্তু প্রথম বা শেষ অবস্থানে নয়) এবং বিন্দু (সাবডোমেনের ক্ষেত্রে)। যেহেতু আন্ডারস্কোর অনুমোদিত নয়, \w এর পরিবর্তে আমরা 3টি ভিন্ন অক্ষর সেট ব্যবহার করছি: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
    • টপ-লেভেল ডোমেন একটি ডট নিয়ে গঠিত যার পরে বড় হাতের অক্ষর এবং ছোট হাতের অক্ষর রয়েছে। এতে 2 থেকে 24টি অক্ষর থাকতে পারে (বর্তমানে বিদ্যমান দীর্ঘতম TLD): \[A-Za-z]{2,24}

    নোট। প্যাটার্নটি অনুমান করে যে ডোমেন নামটিতে 2 বা তার বেশি বর্ণসংখ্যার অক্ষর রয়েছে৷ 0 একটি ছোট হাতের বা বড় হাতের অক্ষর সেট সহ ইমেল যাচাইকরণের জন্য অভিব্যক্তি:

    প্যাটার্ন : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\[a-z]{2,24}\b

    কিন্তু আপনার সূত্র কেস-অসংবেদনশীল করুন:

    =RegExpMatch(A5, $A$2, FALSE)

    ম্যাচ রেজেক্স সহ এক্সেল আইএফ সূত্র

    ইনবিল্ট এবং কাস্টম হওয়ার কারণেফাংশনগুলি সুন্দরভাবে চলতে থাকে, এমন কিছু নেই যা আপনাকে একটি একক সূত্রে সেগুলিকে একসাথে ব্যবহার করতে বাধা দেবে৷

    রেগুলার এক্সপ্রেশন মিলে গেলে কিছু ফেরত বা গণনা করতে এবং যদি এটি মেলে না হয় তবে অন্য কিছু, কাস্টম RegExpMatch এম্বেড করুন IF এর লজিক্যাল টেক্সটে ফাংশন:

    IF(RegExpMatch(…), [value_if_true], [value_if_false])

    উদাহরণস্বরূপ, A5-এর একটি স্ট্রিং-এ যদি একটি বৈধ ইমেল ঠিকানা থাকে, আপনি "হ্যাঁ" ফেরত দিতে পারেন; অন্যথায় "না"।

    =IF(RegExpMatch(A5, $A$2,), "Yes", "No")

    রেজেক্স মিলে গেলে গণনা করুন

    কারণ নেটিভ এক্সেল ফাংশন রেগুলার এক্সপ্রেশন সমর্থন করে না, তাই COUNTIS বা COUNTIFS ফাংশনে সরাসরি একটি রেজেক্স রাখা সম্ভব নয়। সৌভাগ্যবশত, আপনি আমাদের কাস্টম ফাংশন ব্যবহার করে এই কার্যকারিতাটি অনুকরণ করতে পারেন।

    ধরুন আপনি ফোন নম্বরগুলি মেলানোর জন্য একটি রেজেক্স ব্যবহার করেছেন এবং B কলামে ফলাফলগুলি আউটপুট করেছেন। কতগুলি ঘরে ফোন নম্বর রয়েছে তা খুঁজে বের করতে, আপনাকে শুধু প্রয়োজন B5:B9 এ সত্য মান গণনা করতে। এবং এটি সহজে স্ট্যান্ডার্ড COUNTIF সূত্র ব্যবহার করে করা যেতে পারে:

    =COUNTIF(B5:B9, TRUE)

    আপনার ওয়ার্কশীটে কোনও অতিরিক্ত কলাম চান না? সমস্যা নেই. আমাদের কাস্টম ফাংশন একবারে একাধিক সেল প্রক্রিয়া করতে পারে এবং Excel এর SUM একটি অ্যারেতে মান যোগ করতে পারে তা মনে রেখে, আপনি যা করবেন তা এখানে:

    • RegExpMatch-এ একটি রেঞ্জ রেফারেন্স সরবরাহ করুন, যাতে এটি একটি রিটার্ন করে TRUE এবং FALSE মানগুলির অ্যারে৷
    • যৌক্তিক মানগুলিকে জোর করতে একটি ডবল নেগেশান (--) ব্যবহার করুন এবংশূন্য৷
    • ফলাফল অ্যারেতে 1 এবং 0 যোগ করতে SUM ফাংশন পান৷

    =SUM(--RegExpMatch(A5:A9, $A$2))

    রেজেক্স মিল আলটিমেট স্যুটের সাথে

    আমাদের আলটিমেট স্যুটের ব্যবহারকারীরা তাদের ওয়ার্কবুকগুলিতে কোনও VBA কোড যোগ না করেই চারটি শক্তিশালী Regex ফাংশন ব্যবহার করতে পারে কারণ তারা অ্যাড-ইন ইনস্টলেশনের সময় এক্সেলে সহজে একত্রিত হয়। আমাদের কাস্টম ফাংশনগুলি স্ট্যান্ডার্ড .NET RegEx ইঞ্জিন দ্বারা প্রক্রিয়া করা হয় এবং পূর্ণ বৈশিষ্ট্যযুক্ত ক্লাসিক রেগুলার এক্সপ্রেশন সমর্থন করে।

    কাস্টম RegexMatch ফাংশন কীভাবে ব্যবহার করবেন

    অনুমান করা হচ্ছে যে আপনি আলটিমেট স্যুটের সর্বশেষ সংস্করণ ইনস্টল করেছেন ( 2021.4 বা তার পরে), আপনি দুটি সহজ ধাপে একটি Regex ম্যাচ ফর্মুলা তৈরি করতে পারেন:

    1. Ablebits Data ট্যাবে, Text গ্রুপে ক্লিক করুন রেজেক্স টুলস

  • রেজেক্স টুলস প্যানে, নিম্নলিখিতগুলি করুন:
    • নির্বাচন করুন সোর্স স্ট্রিং।
    • আপনার প্যাটার্ন লিখুন।
    • ম্যাচ অপশনটি বেছে নিন।
    • ফর্মুলা হিসেবে ফলাফল পেতে, মান নয়, <নির্বাচন করুন 8>সূত্র হিসেবে সন্নিবেশ করুন চেক বক্স।
    • ম্যাচ বোতামে ক্লিক করুন।

    এক মুহূর্ত পরে, AblebitsRegexMatch ফাংশনটি আপনার ডেটার ডানদিকে একটি নতুন কলামে ঢোকানো হয়৷

    নীচের স্ক্রিনশটে, ফাংশনটি কলাম A-এর স্ট্রিংগুলিতে 7-সংখ্যা রয়েছে কিনা তা পরীক্ষা করে সংখ্যা বা না।

    টিপস:

    • ফাঙ্ক tion ঢোকানো যেতে পারে সরাসরি একটি কক্ষে স্ট্যান্ডার্ড ইনসার্ট ফাংশন ডায়ালগ বক্সের মাধ্যমে, যেখানে এটি AblebitsUDFs এর অধীনে শ্রেণীবদ্ধ করা হয়।
    • ডিফল্টরূপে, সূত্রে একটি রেগুলার এক্সপ্রেশন যোগ করা হয়, তবে আপনি রাখতে পারেন এটি একটি পৃথক কক্ষে। এর জন্য, ২য় আর্গুমেন্টের জন্য শুধুমাত্র একটি সেল রেফারেন্স ব্যবহার করুন।
    • ডিফল্টরূপে, ফাংশনটি কেস-সংবেদনশীল । অক্ষর-সংবেদনশীল মিলের জন্য, (?i) প্যাটার্নটি ব্যবহার করুন৷

    আরও তথ্যের জন্য, অনুগ্রহ করে AblebitsRegexMatch ফাংশনটি দেখুন৷

    এভাবে এক্সেলে রেগুলার এক্সপ্রেশন ম্যাচিং করতে হয়৷ আমি পড়ার জন্য আপনাকে ধন্যবাদ এবং আগামী সপ্তাহে আমাদের ব্লগে আপনাকে দেখার জন্য অপেক্ষা করছি!

    উপলভ্য ডাউনলোড

    Excel Regex ম্যাচের উদাহরণ (.xlsm ফাইল)

    আলটিমেট স্যুট 14- দিন সম্পূর্ণরূপে কার্যকরী সংস্করণ (.exe ফাইল)

    যদি cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 থেকে cntInputRows, 1 থেকে cntInputCols) iInputCurRow = 1 থেকে cntInputRows-এর জন্য iInputCurCol = 1 থেকে .Cells(iInputCurRow, iInputCurCol.Value) পরবর্তী পরবর্তী RegExpMatch = arRes প্রস্থান ফাংশন ErrHandl: RegExpMatch = CVErr(xlErrValue) ফাংশন শেষ করুন

    VBA সম্পাদকে কোড পেস্ট করুন, এবং আপনার নতুন ফাংশন হল RegEx2 ব্যবহারের জন্য প্রস্তুত. আপনি যদি VBA নিয়ে খুব বেশি অভিজ্ঞ না হন, তাহলে এই নির্দেশিকাটি সহায়ক হতে পারে: কিভাবে Excel এ VBA কোড সন্নিবেশ করা যায়।

    দ্রষ্টব্য। কোড সন্নিবেশ করার পরে, আপনার ফাইলটিকে একটি ম্যাক্রো-সক্ষম ওয়ার্কবুক (.xlsm) হিসাবে সংরক্ষণ করতে ভুলবেন না।

    RegExpMatch সিনট্যাক্স

    RegExpMatch ফাংশনটি সোর্স স্ট্রিংয়ের কোনো অংশ নিয়মিত এক্সপ্রেশনের সাথে মেলে কিনা তা পরীক্ষা করে। ফলাফল হল একটি বুলিয়ান মান: সত্য যদি অন্তত একটি মিল পাওয়া যায়, অন্যথায় মিথ্যা৷

    আমাদের কাস্টম ফাংশনটিতে 3টি আর্গুমেন্ট রয়েছে - প্রথম দুটি প্রয়োজন এবং শেষটি ঐচ্ছিক:

    RegExpMatch(টেক্সট , প্যাটার্ন, [match_case])

    কোথায়:

    • টেক্সট (প্রয়োজনীয়) - অনুসন্ধান করার জন্য এক বা একাধিক স্ট্রিং। একটি সেল বা রেঞ্জ রেফারেন্স হিসাবে সরবরাহ করা যেতে পারে।
    • প্যাটার্ন (প্রয়োজনীয়) - মেলে রেগুলার এক্সপ্রেশন। যখন একটি সূত্রে সরাসরি স্থাপন করা হয়, তখন একটি প্যাটার্ন অবশ্যই ডবল উদ্ধৃতিতে আবদ্ধ হতে হবে।
    • Match_case (ঐচ্ছিক) - মিলটিকে সংজ্ঞায়িত করেটাইপ যদি TRUE বা বাদ দেওয়া হয় (ডিফল্ট), কেস-সংবেদনশীল মিল সঞ্চালিত হয়; যদি মিথ্যা - অক্ষর-সংবেদনশীল৷

    ফাংশনটি Excel 365, Excel 2021, Excel 2019, Excel 2016, Excel 2013 এবং Excel 2010-এর সমস্ত সংস্করণে কাজ করে৷

    3টি জিনিস আপনি RegExpMatch সম্বন্ধে জানা উচিত

    আমাদের ব্যবহারিক গণনা করার আগে, অনুগ্রহ করে নিম্নলিখিত পয়েন্টগুলি লক্ষ্য করুন যা কিছু প্রযুক্তিগত বিষয়গুলিকে স্পষ্ট করে:

    1. ফাংশনটি একটি একক সেল<9 প্রক্রিয়া করতে পারে> অথবা কোষের পরিসর । পরবর্তী ক্ষেত্রে, ফলাফলগুলি একটি ডায়নামিক অ্যারে বা স্পিল পরিসরের আকারে পার্শ্ববর্তী কোষগুলিতে ফিরে আসে, যেমন এই উদাহরণে দেখানো হয়েছে৷
    2. ডিফল্টরূপে, ফাংশনটি কেস-সংবেদনশীল । টেক্সট কেস উপেক্ষা করতে, match_case আর্গুমেন্ট FALSE সেট করুন। VBA Regexp সীমাবদ্ধতার কারণে, কেস-অসংবেদনশীল প্যাটার্ন (?i) সমর্থিত নয়।
    3. যদি একটি বৈধ প্যাটার্ন পাওয়া না যায়, ফাংশনটি FALSE প্রদান করে; যদি প্যাটার্নটি অবৈধ হয় , একটি #VALUE! ত্রুটি দেখা দেয়।

    নীচে, আপনি কয়েকটি রেজেক্স ম্যাচের উদাহরণ পাবেন যা প্রদর্শনের উদ্দেশ্যে তৈরি করা হয়েছে। আমরা গ্যারান্টি দিতে পারি না যে আমাদের নিদর্শনগুলি আপনার বাস্তব ওয়ার্কশীটে ইনপুট ডেটার বিস্তৃত পরিসরের সাথে ত্রুটিহীনভাবে কাজ করবে। প্রোডাকশন করার আগে, আপনার প্রয়োজন অনুযায়ী আমাদের নমুনা প্যাটার্নগুলি পরীক্ষা এবং সামঞ্জস্য করতে ভুলবেন না।

    এক্সেল-এ স্ট্রিংগুলিকে মেলানোর জন্য কীভাবে রেজেক্স ব্যবহার করবেন

    যখন আপনি যে সমস্ত স্ট্রিংগুলিকে মেলাতে চান একই প্যাটার্ন,রেগুলার এক্সপ্রেশন হল একটি আদর্শ সমাধান৷

    ধরুন আপনার কাছে কিছু আইটেম সম্পর্কে বিভিন্ন বিশদ বিবরণ সহ একটি পরিসর (A5:A9) রয়েছে৷ আপনি জানতে চান কোন কক্ষে SKU আছে। ধরে নিচ্ছি যে প্রতিটি SKU 2টি বড় অক্ষর, একটি হাইফেন এবং 3টি সংখ্যা নিয়ে গঠিত, আপনি নিম্নলিখিত অভিব্যক্তিটি ব্যবহার করে সেগুলিকে মেলাতে পারেন৷

    প্যাটার্ন : \b[A-Z]{2}-\ d{3}\b

    যেখানে [A-Z]{2} মানে A থেকে Z পর্যন্ত যেকোনো 2টি বড় হাতের অক্ষর এবং \d{3} মানে 0 থেকে 9 পর্যন্ত যেকোনো 3টি সংখ্যা। \b অক্ষরটি একটি শব্দকে বোঝায় সীমানা, মানে একটি SKU একটি পৃথক শব্দ, এবং 23-MAR-2022 এর মতো বড় স্ট্রিংয়ের অংশ নয়।

    প্যাটার্নটি প্রতিষ্ঠিত হলে, আমরা একটি সূত্র লেখার দিকে এগিয়ে যেতে পারি। মূলত, একটি কাস্টম ফাংশন ব্যবহার করা একটি নেটিভ থেকে আলাদা নয়। যত তাড়াতাড়ি আপনি একটি সূত্র টাইপ করা শুরু করবেন, ফাংশনের নামটি এক্সেলের স্বয়ংসম্পূর্ণ দ্বারা প্রস্তাবিত তালিকায় উপস্থিত হবে। যাইহোক, ডায়নামিক অ্যারে এক্সেল (মাইক্রোসফ্ট 365 এবং এক্সেল 2021) এবং প্রথাগত এক্সেল (2019 এবং পুরানো সংস্করণগুলিতে) কয়েকটি সূক্ষ্মতা রয়েছে।

    একটি কক্ষে স্ট্রিং মেলান

    একটি স্ট্রিং মেলাতে একটি একক ঘরে, প্রথম আর্গুমেন্টে সেই ঘরটি পড়ুন। দ্বিতীয় যুক্তিতে একটি রেগুলার এক্সপ্রেশন থাকার কথা।

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    প্যাটার্নটিকে একটি পূর্বনির্ধারিত ঘরেও রাখা যেতে পারে, যা একটি পরম রেফারেন্স ($A$2):<3 দিয়ে লক করা থাকে।

    =RegExpMatch(A5, $A$2)

    প্রথম কক্ষে সূত্রটি প্রবেশ করার পর, আপনি এটিকে অন্য সব সারিতে টেনে আনতে পারেন।

    এই পদ্ধতি সমস্ত এক্সেল সংস্করণে সুন্দরভাবে কাজ করে।

    একাধিক কক্ষে একযোগে স্ট্রিং মিলান

    একটি সূত্রের সাথে একাধিক স্ট্রিং মেলাতে, প্রথম আর্গুমেন্টে একটি রেঞ্জ রেফারেন্স অন্তর্ভুক্ত করুন:

    =RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")

    Excel 365 এবং Excel 2021 যেগুলি গতিশীল অ্যারে সমর্থন করে, এটি এইভাবে কাজ করে - আপনি প্রথম কক্ষে সূত্রটি টাইপ করুন, এন্টার টিপুন, এবং সূত্রটি স্বয়ংক্রিয়ভাবে নীচের কক্ষগুলিতে ছড়িয়ে পড়ে৷

    এক্সেল 2019 এবং তার আগে, এটি শুধুমাত্র একটি প্রথাগত CSE অ্যারে সূত্র হিসাবে কাজ করে, যা বিভিন্ন কক্ষে প্রবেশ করানো হয় এবং Ctrl + Shift + Enter কী একসাথে টিপে সম্পূর্ণ হয়।

    সংখ্যার সাথে মিল করতে Regex

    0 থেকে 9 পর্যন্ত যেকোনো একক অঙ্কের সাথে মিল করতে, রেজেক্সে \d অক্ষরটি ব্যবহার করুন। আপনার নির্দিষ্ট কাজের উপর নির্ভর করে, একটি উপযুক্ত কোয়ান্টিফায়ার যোগ করুন বা আরও জটিল প্যাটার্ন তৈরি করুন।

    যেকোন সংখ্যার সাথে মেলানোর জন্য Regex

    যেকোন দৈর্ঘ্যের যেকোন সংখ্যার সাথে মেলাতে, / এর ঠিক পরে + কোয়ান্টিফায়ার রাখুন d অক্ষর, যা 1 বা ততোধিক সংখ্যাযুক্ত সংখ্যাগুলি সন্ধান করতে বলে৷

    প্যাটার্ন : \d+

    =RegExpMatch(A5:A9, "\d+")

    নির্দিষ্ট দৈর্ঘ্যের সংখ্যার সাথে মেলে রেজেক্স

    যদি আপনার লক্ষ্য হয় একটি নির্দিষ্ট সংখ্যক সংখ্যা বিশিষ্ট সাংখ্যিক মানগুলির সাথে মিল করা, তাহলে একটি উপযুক্ত কোয়ান্টিফায়ারের সাথে \d একসাথে ব্যবহার করুন।

    উদাহরণস্বরূপ, ঠিক 7 সংখ্যার ইনভয়েস নম্বরের সাথে মেলাতে, আপনি \d{7} ব্যবহার করবেন। তবে, দয়া করে মনে রাখবেন এটি 7 মিলবেপ্রত্যাশিত হিসাবে:

    নোট:

    • আন্তর্জাতিক কোড চেক করা হয় না, তাই তারা উপস্থিত থাকতে পারে বা নাও থাকতে পারে।
    • রেগুলার এক্সপ্রেশনে, \s মানে যেকোন হোয়াইটস্পেস অক্ষর যেমন স্পেস, ট্যাব, ক্যারেজ রিটার্ন বা নতুন লাইন। শুধুমাত্র স্পেসকে অনুমতি দিতে, [-\' ব্যবহার করুন। [-\.\s]-এর পরিবর্তে ]।
    • অক্ষর মেলে না এমন Regex

      কোন নির্দিষ্ট অক্ষর ধারণ করে না এমন স্ট্রিংগুলি খুঁজে পেতে, আপনি মেলে এমন অক্ষর শ্রেণী [^ ] ব্যবহার করতে পারেন বন্ধনীতে নয় এমন কিছু। উদাহরণস্বরূপ:

      • [^13] 1 বা 3 নয় এমন যেকোনো একক অক্ষরের সাথে মিলবে।
      • [^1-3] 1 নয় এমন যেকোনো একক অক্ষরের সাথে মিলবে, 2 বা 3 (অর্থাৎ 1 থেকে 3 পর্যন্ত যেকোনো সংখ্যা)।

      ফোন নম্বরের একটি তালিকায়, ধরুন আপনি এমনগুলি খুঁজে পেতে চান যেগুলির কোনও দেশের কোড নেই৷ যেকোন আন্তর্জাতিক কোডে + চিহ্ন রয়েছে তা মনে রেখে, আপনি এমন স্ট্রিংগুলি খুঁজে পেতে [^\+] অক্ষর শ্রেণী ব্যবহার করতে পারেন যেখানে একটি প্লাস চিহ্ন নেই। এটা বোঝা গুরুত্বপূর্ণ যে উপরের অভিব্যক্তিটি যে কোনো একক অক্ষরের সাথে মেলে যা + নয়। যেহেতু একটি ফোন নম্বর একটি স্ট্রিংয়ের যে কোনও জায়গায় থাকতে পারে, অগত্যা একেবারে শুরুতে নয়, প্রতিটি পরবর্তী অক্ষর পরীক্ষা করার জন্য * কোয়ান্টিফায়ার যোগ করা হয়। শুরু ^ এবং শেষ $ অ্যাঙ্করগুলি নিশ্চিত করে যে পুরো স্ট্রিংটি প্রক্রিয়া করা হয়েছে। ফলস্বরূপ, আমরা নীচের রেগুলার এক্সপ্রেশনটি পাই যা বলে যে "স্ট্রিং-এর যেকোনো অবস্থানে + অক্ষরের সাথে মেলে না।"

      প্যাটার্ন :^[^\+]*$

      =RegExpMatch(A5, "^[^\+]*$")

      রেজেক্স টু নট মেলে স্ট্রিং

      যদিও এর জন্য কোন বিশেষ রেগুলার এক্সপ্রেশন সিনট্যাক্স নেই একটি নির্দিষ্ট স্ট্রিং মেলে না, আপনি একটি নেতিবাচক লুকআহেড ব্যবহার করে এই আচরণটি অনুকরণ করতে পারেন৷

      ধরুন আপনি এমন স্ট্রিংগুলি খুঁজে পেতে চান যাতে "লেবু" শব্দটি থাকে না ৷ এই রেগুলার এক্সপ্রেশনটি একটি ট্রিট কাজ করবে:

      প্যাটার্ন : ^((?!lemons).)*$

      অবশ্যই, এখানে কিছু ব্যাখ্যা প্রয়োজন। নেগেটিভ লুকআহেড (?!lemons) ডানদিকে তাকায় যে সামনে "লেবু" শব্দ নেই কিনা। যদি "লেবু" না থাকে, তবে বিন্দুটি একটি লাইন বিরতি ছাড়া যেকোনো অক্ষরের সাথে মেলে। উপরের অভিব্যক্তিটি শুধুমাত্র একটি পরীক্ষা করে, এবং * কোয়ান্টিফায়ার ^ দ্বারা অ্যাঙ্কর করা স্ট্রিংয়ের শুরু থেকে $ দ্বারা অ্যাঙ্কর করা স্ট্রিংয়ের শেষ পর্যন্ত শূন্য বা তার বেশি বার পুনরাবৃত্তি করে।

      টেক্সট কেস উপেক্ষা করতে, আমরা আমাদের ফাংশন কেস-অসংবেদনশীল করতে 3 তম আর্গুমেন্ট FALSE এ সেট করি:

      =RegExpMatch(A5, $A$2, FALSE)

      টিপস এবং নোট:

      • উপরের রেজেক্স শুধুমাত্র একক-লাইন স্ট্রিংগুলির জন্য কাজ করে। মিল্টি-লাইন স্ট্রিংয়ের ক্ষেত্রে, ^ এবং $ অক্ষরগুলি ইনপুট স্ট্রিংয়ের শুরু এবং শেষের পরিবর্তে প্রতিটি লাইনের শুরু এবং শেষের সাথে মেলে, তাই regex শুধুমাত্র প্রথম লাইনে অনুসন্ধান করে।
      • যে স্ট্রিংগুলি শুরু হয় না নির্দিষ্ট টেক্সটের সাথে মেলানোর জন্য, একটি রেগুলার এক্সপ্রেশন ব্যবহার করুন যেমন ^(?!lemons).*$
      • নির্দিষ্ট টেক্সটের সাথে যে স্ট্রিংগুলি শেষ হয় না এর সাথে মেলাতে, অন্তর্ভুক্ত করুনঅনুসন্ধান প্যাটার্নে শেষ স্ট্রিং অ্যাঙ্কর: ^((?!lemons$).)*$

      কেস সংবেদনশীল ম্যাচিং

      ক্লাসিক রেগুলার এক্সপ্রেশনে, এর জন্য একটি বিশেষ প্যাটার্ন রয়েছে কেস-অসংবেদনশীল ম্যাচিং (?i), যা VBA RegExp-এ সমর্থিত নয়। এই সীমাবদ্ধতা কাটিয়ে উঠতে, আমাদের কাস্টম ফাংশন match_case নামে 3য় ঐচ্ছিক আর্গুমেন্ট গ্রহণ করে। অক্ষর-সংবেদনশীল ম্যাচিং করতে, এটিকে FALSE এ সেট করুন৷

      আসুন আপনি 1-Mar-22 বা 01-MAR-2022-এর মতো তারিখগুলি সনাক্ত করতে চান৷ dd-mmm-yyyy এবং d-mmm-yy ফরম্যাটের সাথে মেলাতে, আমরা নিম্নলিখিত রেগুলার এক্সপ্রেশন ব্যবহার করছি।

      প্যাটার্ন : \b\d{1,2}-(জানুয়ারিএকটি 10-সংখ্যা বা 100-সংখ্যার নম্বর সহ স্ট্রিংয়ের যে কোনও জায়গায় সংখ্যা। আপনি যা খুঁজছেন তা যদি এটি না হয় তবে উভয় পাশে সীমানা শব্দটি রাখুন।

      প্যাটার্ন : \b\d{7}\b

      =RegExpMatch(A5:A9, "\b\d{7}\b")

      ফোন নম্বর মেলানোর জন্য Regex

      যেহেতু ফোন নম্বরগুলি বিভিন্ন ফরম্যাটে লেখা যেতে পারে, সেহেতু সেগুলিকে মেলানোর জন্য আরও পরিশীলিত রেগুলার এক্সপ্রেশন প্রয়োজন৷

      নীচের ডেটাসেটে, আমরা 10-সংখ্যার সংখ্যাগুলি অনুসন্ধান করব যেগুলির প্রথম 2টি গোষ্ঠীতে 3টি সংখ্যা এবং শেষ গোষ্ঠীতে 4টি সংখ্যা রয়েছে৷ গ্রুপগুলোকে পিরিয়ড, হাইফেন বা স্পেস দিয়ে আলাদা করা যায়। প্রথম গ্রুপ বন্ধনীতে আবদ্ধ হতে পারে বা নাও থাকতে পারে।

      প্যাটার্ন: (\(\d{3}\)

    মাইকেল ব্রাউন হল সফ্টওয়্যার সরঞ্জাম ব্যবহার করে জটিল প্রক্রিয়াগুলিকে সরল করার আবেগের সাথে একজন উত্সর্গীকৃত প্রযুক্তি উত্সাহী৷ প্রযুক্তি শিল্পে এক দশকেরও বেশি অভিজ্ঞতার সাথে, তিনি মাইক্রোসফ্ট এক্সেল এবং আউটলুক, সেইসাথে Google পত্রক এবং ডক্সে তার দক্ষতাকে সম্মানিত করেছেন। মাইকেলের ব্লগটি তার জ্ঞান এবং দক্ষতা অন্যদের সাথে ভাগ করে নেওয়ার জন্য নিবেদিত, উত্পাদনশীলতা এবং দক্ষতার উন্নতির জন্য সহজে অনুসরণযোগ্য টিপস এবং টিউটোরিয়াল প্রদান করে৷ আপনি একজন অভিজ্ঞ পেশাদার বা একজন শিক্ষানবিসই হোন না কেন, মাইকেলের ব্লগ এই প্রয়োজনীয় সফ্টওয়্যার সরঞ্জামগুলি থেকে সর্বাধিক পাওয়ার জন্য মূল্যবান অন্তর্দৃষ্টি এবং ব্যবহারিক পরামর্শ প্রদান করে৷