সুচিপত্র
এই টিউটোরিয়ালে, আপনি শিখবেন কিভাবে এক্সেলে রেগুলার এক্সপ্রেশন ব্যবহার করে একটি প্রদত্ত প্যাটার্নের সাথে মিলে যাওয়া সাবস্ট্রিংগুলি খুঁজে বের করতে হয়।
মাইক্রোসফ্ট এক্সেল পাঠ্য বের করার জন্য অনেকগুলি ফাংশন প্রদান করে। কোষ থেকে। এই ফাংশনগুলি আপনার ওয়ার্কশীটে বেশিরভাগ স্ট্রিং নিষ্কাশন চ্যালেঞ্জ মোকাবেলা করতে পারে। অধিকাংশ, কিন্তু সব না. যখন পাঠ্য ফাংশন হোঁচট খায়, নিয়মিত অভিব্যক্তি উদ্ধার করতে আসে। অপেক্ষা করুন... এক্সেলের কোনো RegEx ফাংশন নেই! সত্য, কোন অন্তর্নির্মিত ফাংশন. কিন্তু এমন কিছু নেই যা আপনাকে আপনার নিজের ব্যবহার করা থেকে বাধা দেবে :)
স্ট্রিং এক্সট্রাক্ট করার জন্য এক্সেল VBA রেজেক্স ফাংশন
আপনার এক্সেলে একটি কাস্টম রেজেক্স এক্সট্র্যাক্ট ফাংশন যোগ করতে, VBA সম্পাদকে নিম্নলিখিত কোডটি পেস্ট করুন। VBA-তে রেগুলার এক্সপ্রেশন চালু করার জন্য, আমরা বিল্ট-ইন Microsoft RegExp অবজেক্ট ব্যবহার করছি।
পাবলিক ফাংশন RegExpExtract(টেক্সট অ্যাজ স্ট্রিং, প্যাটার্ন অ্যাজ স্ট্রিং, ঐচ্ছিক ইনস্ট্যান্স_সংখ্যা পূর্ণসংখ্যা হিসাবে = 0, ঐচ্ছিক ম্যাচ_কেস বুলিয়ান = ট্রু হিসাবে) ম্লান। text_matches() স্ট্রিং হিসাবে Dim matches_index হিসাবে পূর্ণসংখ্যা হিসাবে ত্রুটি GoTo ErrHandl RegExpExtract = "" সেট regex = CreateObject ( "VBScript.RegExp" ) regex.pattern = pattern regex.Global = True regex.MultiLine = True_Line = True_Line ম্যাচ। ignorecase = মিথ্যা অন্যথা regex.ignorecase = True End যদি সেট মেলে = regex.Execute(text) যদি 0 < matches.Count তারপর If (0 = instance_num) তারপর reDim text_maches(maches.Count - 1, 0) matches_index = 0 এর জন্যVBA RegExp, আমি আপনাকে পরবর্তী অংশটি পড়তে উত্সাহিত করছি যা অনেক বেশি শক্তিশালী .NET Regex ফাংশন নিয়ে আলোচনা করে৷Excel-এ পাঠ্য বের করার জন্য কাস্টম .NET ভিত্তিক Regex ফাংশন
VBA RegExp ফাংশনের বিপরীতে যেকোনো এক্সেল ব্যবহারকারীর দ্বারা লিখিত হতে পারে, .NET RegEx হল ডেভেলপারের রাজ্য। Microsoft .NET ফ্রেমওয়ার্ক পার্ল 5-এর সাথে সামঞ্জস্যপূর্ণ পূর্ণ-বৈশিষ্ট্যযুক্ত রেগুলার এক্সপ্রেশন সিনট্যাক্স সমর্থন করে। এই নিবন্ধটি আপনাকে এই ধরনের ফাংশন কীভাবে লিখতে হয় তা শেখাবে না (আমি একজন প্রোগ্রামার নই এবং কীভাবে এটি করতে হয় সে সম্পর্কে আমার সামান্যতম ধারণা নেই :)
মানক .NET RegEx ইঞ্জিন দ্বারা প্রক্রিয়াকৃত চারটি শক্তিশালী ফাংশন ইতিমধ্যেই আমাদের ডেভেলপারদের দ্বারা লেখা এবং আলটিমেট স্যুটে অন্তর্ভুক্ত৷ নীচে, আমরা এক্সেলে পাঠ্য বের করার জন্য বিশেষভাবে ডিজাইন করা ফাংশনের কিছু ব্যবহারিক ব্যবহার প্রদর্শন করব।
টিপ। .NET Regex সিনট্যাক্স সম্পর্কে তথ্যের জন্য, অনুগ্রহ করে .NET রেগুলার এক্সপ্রেশন ল্যাঙ্গুয়েজ পড়ুন।
রেগুলার এক্সপ্রেশন ব্যবহার করে কিভাবে এক্সেলে স্টিং এক্সট্র্যাক্ট করবেন
আপনার কাছে আলটিমেট স্যুটের সর্বশেষ সংস্করণ ইনস্টল করা আছে, রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সট এক্সট্র্যাক্ট করা এই দুটি ধাপে চলে আসে:
- Ablebits Data ট্যাবে, Text গ্রুপে, Regex Tools এ ক্লিক করুন।
- রেজেক্স টুলস প্যানে, সোর্স ডেটা নির্বাচন করুন, আপনার রেজেক্স প্যাটার্ন লিখুন এবং এক্সট্রাক্ট বিকল্পটি বেছে নিন। একটি মান নয়, একটি কাস্টম ফাংশন হিসাবে ফলাফল পেতে, সূত্র হিসাবে সন্নিবেশ করুন চেক নির্বাচন করুনবাক্স হয়ে গেলে, Extract বোতামে ক্লিক করুন।
ফলাফলগুলি আপনার আসল ডেটার ডানদিকে একটি নতুন কলামে প্রদর্শিত হবে:
AblebitsRegexExtract সিনট্যাক্স
আমাদের কাস্টম ফাংশনে নিম্নলিখিত সিনট্যাক্স রয়েছে:
AblebitsRegexExtract(reference, regular_expression)কোথায়:
- রেফারেন্স (প্রয়োজনীয়) - উৎস স্ট্রিং ধারণকারী ঘরের একটি রেফারেন্স।
- রেগুলার_এক্সপ্রেশন (প্রয়োজনীয়) - মেলে রেগেক্স প্যাটার্ন।
গুরুত্বপূর্ণ নোট! ফাংশনটি শুধুমাত্র সেই মেশিনে কাজ করে যেখানে Excel এর জন্য Ultimate Suite ইনস্টল করা আছে।
ব্যবহারের নোট
আপনার শেখার বক্ররেখাকে মসৃণ করতে এবং আপনার অভিজ্ঞতাকে আরও আনন্দদায়ক করতে, অনুগ্রহ করে এই পয়েন্টগুলিতে মনোযোগ দিন:
- একটি সূত্র তৈরি করতে, আপনি আমাদের রেজেক্স টুলস , অথবা এক্সেলের ইনসার্ট ফাংশন ডায়ালগ ব্যবহার করতে পারেন, অথবা একটি ঘরে সম্পূর্ণ ফাংশনের নাম টাইপ করতে পারেন। একবার সূত্রটি ঢোকানো হয়ে গেলে, আপনি যেকোনো নেটিভ সূত্রের মতো এটি পরিচালনা করতে পারেন (সম্পাদনা, অনুলিপি বা সরানো)।
- আপনি রেজেক্স টুলস প্যানেলে যে প্যাটার্নটি প্রবেশ করেন তা ২য় আর্গুমেন্টে যায়। একটি পৃথক কক্ষে নিয়মিত অভিব্যক্তি রাখাও সম্ভব। এই ক্ষেত্রে, 2য় আর্গুমেন্টের জন্য শুধুমাত্র একটি সেল রেফারেন্স ব্যবহার করুন।
- ফাংশনটি প্রথম পাওয়া মিল বের করে।
- ডিফল্টরূপে, ফাংশনটি হল কেস -সংবেদনশীল । অক্ষর-সংবেদনশীল মিলের জন্য, (?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)), "]", ""),"[","")
ভালভাবে পাঠযোগ্যতার জন্য, আমরা বিভাজনের জন্য একটি কমা ব্যবহার করছি।
দুটি স্ট্রিংয়ের মধ্যে পাঠ্য বের করার জন্য Regex
আমরা যে পদ্ধতিটি কাজ করেছিএটিকে আক্ষরিক অর্থে ব্যাখ্যা করুন)।
A2-তে কোন রেগুলার এক্সপ্রেশনটি প্রবেশ করানো হয়েছে তার উপর নির্ভর করে, নীচের সূত্রটি ভিন্ন ফলাফল দেবে:
=AblebitsRegexExtract(A5, $A$2)
সব সাবডোমেন সহ সম্পূর্ণ ডোমেন নাম এক্সট্র্যাক্ট করতে Regex:
রেজেক্স সাবডোমেন ছাড়াই সেকেন্ড-লেভেল ডোমেন এক্সট্র্যাক্ট করতে:
এভাবে রেগুলার এক্সপ্রেশন ব্যবহার করে এক্সেলে টেক্সটের কিছু অংশ বের করা যায়। আমি পড়ার জন্য আপনাকে ধন্যবাদ এবং আগামী সপ্তাহে আমাদের ব্লগে আপনাকে দেখার জন্য অপেক্ষা করছি!
উপলভ্য ডাউনলোড
Excel Regex Extract উদাহরণ (.xlsm ফাইল)
আলটিমেট স্যুট ট্রায়াল সংস্করণ (.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:VrrxEndFunction ErrVxlEndEdআপনার যদি VBA নিয়ে সামান্য অভিজ্ঞতা থাকে, তাহলে একটি ধাপে ধাপে ব্যবহারকারীর নির্দেশিকা সহায়ক হতে পারে: Excel এ VBA কোড কিভাবে সন্নিবেশ করা যায়।
নোট। ফাংশন কাজ করার জন্য, আপনার ফাইলটিকে একটি ম্যাক্রো-সক্ষম ওয়ার্কবুক (.xlsm) হিসাবে সংরক্ষণ করতে ভুলবেন না।
RegExpExtract সিনট্যাক্স
RegExpExtract ফাংশনটি একটি রেগুলার এক্সপ্রেশনের সাথে মেলে এমন মানগুলির জন্য একটি ইনপুট স্ট্রিং অনুসন্ধান করে এবং এক বা সমস্ত মিল বের করে৷
ফাংশনে নিম্নলিখিত সিনট্যাক্স রয়েছে :
RegExpExtract(টেক্সট, প্যাটার্ন, [instance_num], [match_case])কোথায়:
- Text (প্রয়োজনীয়) - যে টেক্সট স্ট্রিংটি সার্চ করতে হবে।
- প্যাটার্ন (প্রয়োজনীয়) - রেগুলার এক্সপ্রেশন যা মিলবে। একটি সূত্রে সরাসরি সরবরাহ করা হলে, প্যাটার্নটি দ্বিগুণ উদ্ধৃতি চিহ্নে আবদ্ধ করা উচিত।
- ইনস্ট্যান্স_সংখ্যা (ঐচ্ছিক) - একটি ক্রমিক নম্বর যা নির্দেশ করে যে কোন উদাহরণটি বের করতে হবে। যদি বাদ দেওয়া হয়, পাওয়া সমস্ত মিল দেখায় (ডিফল্ট)।
- Match_case (ঐচ্ছিক) - টেক্সট কেস মেলে নাকি উপেক্ষা করবে তা নির্ধারণ করে। যদি TRUE বা বাদ দেওয়া হয় (ডিফল্ট), কেস-সংবেদনশীল মিল সঞ্চালিত হয়; যদি মিথ্যা - অক্ষর-সংবেদনশীল।
ফাংশনটি Excel 365, Excel 2021, Excel এর সমস্ত সংস্করণে কাজ করে2019, Excel 2016, Excel 2013 এবং Excel 2010।
RegExpExtract সম্পর্কে আপনার 4টি জিনিস জানা উচিত
আপনার এক্সেলে ফাংশনটি কার্যকরভাবে ব্যবহার করার জন্য, কয়েকটি গুরুত্বপূর্ণ বিষয় খেয়াল রাখতে হবে:
- ডিফল্টরূপে, ফাংশনটি এই উদাহরণে দেখানো মত প্রতিবেশী কক্ষে সমস্ত পাওয়া মিল ফেরত দেয়। একটি নির্দিষ্ট ঘটনা পেতে, instance_num আর্গুমেন্টে একটি সংশ্লিষ্ট নম্বর সরবরাহ করুন।
- ডিফল্টরূপে, ফাংশনটি কেস-সংবেদনশীল । কেস-সংবেদনশীল মিলের জন্য, match_case আর্গুমেন্টটি FALSE তে সেট করুন। VBA সীমাবদ্ধতার কারণে, কেস-অসংবেদনশীল গঠন (?i) কাজ করবে না।
- যদি একটি বৈধ প্যাটার্ন পাওয়া না যায় , ফাংশনটি কিছুই ফেরত দেয় না (খালি স্ট্রিং)।
- যদি প্যাটার্নটি অবৈধ হয় , একটি #VALUE! ত্রুটি ঘটে।
আপনি আপনার ওয়ার্কশীটে এই কাস্টম ফাংশনটি ব্যবহার করা শুরু করার আগে, আপনাকে বুঝতে হবে এটি কী করতে সক্ষম, তাই না? নীচের উদাহরণগুলি কয়েকটি সাধারণ ব্যবহারের ক্ষেত্রে কভার করে এবং ব্যাখ্যা করে যে কেন আচরণটি ডায়নামিক অ্যারে এক্সেল (মাইক্রোসফ্ট 365 এবং এক্সেল 2021) এবং প্রথাগত এক্সেল (2019 এবং পুরানো সংস্করণগুলিতে) আলাদা হতে পারে।
দ্রষ্টব্য। আউট রেজেক্স উদাহরণগুলি পরী সাধারণ ডেটা সেটের জন্য লেখা হয়। আমরা গ্যারান্টি দিতে পারি না যে তারা আপনার আসল ওয়ার্কশীটে নিশ্ছিদ্রভাবে কাজ করবে। যাদের রেজেক্সের অভিজ্ঞতা আছে তারা একমত হবেন যে নিয়মিত অভিব্যক্তি লেখা হল পরিপূর্ণতার একটি শেষ না হওয়া রাস্তা - প্রায় সবসময়ই এটি করার একটি উপায় থাকেএটি আরও মার্জিত বা ইনপুট ডেটার বিস্তৃত পরিসর পরিচালনা করতে সক্ষম।
স্ট্রিং থেকে নম্বর বের করার জন্য রেজেক্স
"সাধারণ থেকে জটিল" শেখানোর মৌলিক সর্বোচ্চটি অনুসরণ করে, আমরা একটি খুব সাধারণ ক্ষেত্রে শুরু করব: স্ট্রিং থেকে নম্বর বের করা।
আপনার জন্য প্রথমে সিদ্ধান্ত নিতে হবে কোন সংখ্যাটি পুনরুদ্ধার করতে হবে: প্রথম, শেষ, নির্দিষ্ট ঘটনা বা সমস্ত সংখ্যা।
প্রথম সংখ্যাটি বের করুন
এটি রেজেক্সের মতো সহজ। প্রদত্ত যে \d মানে 0 থেকে 9 পর্যন্ত যেকোনো অঙ্ক, এবং + মানে এক বা একাধিক বার, আমাদের রেগুলার এক্সপ্রেশন এই ফর্মটি নেয়:
প্যাটার্ন : \d+
সেট instance_num থেকে 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 দ্বারা নিয়ন্ত্রিত হয়>ইন্সট্যান্স_সংখ্যা যুক্তি। ডিফল্ট সব মিল, তাই আপনি এই প্যারামিটারটি বাদ দিন:
=RegExpExtract(A2, "\d+")
সূত্রটি একটি একক কক্ষের জন্য সুন্দরভাবে কাজ করে, কিন্তু আচরণটি ডায়নামিক অ্যারে এক্সেল এবং নন-ডাইনামিক সংস্করণে আলাদা৷
Excel 365 এবং Excel 2021
ডাইনামিক অ্যারেগুলির জন্য সমর্থনের কারণে, একটি নিয়মিত সূত্র স্বয়ংক্রিয়ভাবে সমস্ত গণনা করা ফলাফলগুলি প্রদর্শনের জন্য যতগুলি প্রয়োজন ততগুলি কোষে ছড়িয়ে পড়ে। এক্সেলের পরিপ্রেক্ষিতে, একে বলা হয় স্পিলড রেঞ্জ:
Excel 2019 এবং নিম্ন
প্রি-ডাইনামিক এক্সেলে, উপরের সূত্রটি শুধুমাত্র একটি ম্যাচ ফিরিয়ে দেবে। একাধিক মিল পেতে, আপনাকে এটি একটি অ্যারে সূত্র তৈরি করতে হবে। এর জন্য, কক্ষের একটি পরিসর নির্বাচন করুন, সূত্রটি টাইপ করুন এবং এটি সম্পূর্ণ করতে 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]+"))
এতে Regex স্ট্রিং থেকে ইমেল ঠিকানা বের করুন
বিভিন্ন তথ্য সম্বলিত একটি স্ট্রিং থেকে একটি ইমেল ঠিকানা বের করতে, একটি নিয়মিত অভিব্যক্তি লিখুন যা ইমেল ঠিকানার কাঠামোর প্রতিলিপি করে।
প্যাটার্ন : [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}
এই রেজিক্স ভেঙে দেওয়া , আমরা যা পাই তা এখানে:
- [\w\.\-]+ হল একটি ব্যবহারকারীর নাম যাতে 1 বা তার বেশি বর্ণসংখ্যার অক্ষর, আন্ডারস্কোর, ডট এবং হাইফেন অন্তর্ভুক্ত থাকতে পারে।
- @ প্রতীক >সাবডোমেনের)। এখানে আন্ডারস্কোর অনুমোদিত নয়, তাই 3টি ভিন্ন অক্ষর সেট (যেমন A-Z a-z এবং 0-9) ব্যবহার করা হয় \w এর পরিবর্তে যে কোনো অক্ষর, অঙ্ক বা আন্ডারস্কোরের সাথে মেলে।
- \[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 বা তার বেশি বার প্রদর্শিত যেকোন অক্ষর: হাইফেন, পিরিয়ড, স্পেস বা ক্লোজিং বন্ধনী।
- এর পরে, আমাদের আবার তিনটি সংখ্যা আছে যেকোনো হাইফেন, পিরিয়ড বা স্পেস [-\. ]? 0 বা 1 বার প্রদর্শিত হচ্ছে।
- এর পরে, চারটি সংখ্যার একটি গ্রুপ আছে \d{4}।
- অবশেষে, একটি শব্দের সীমানা রয়েছে \b এটি সংজ্ঞায়িত করে যে আমরা একটি ফোন নম্বর খুঁজছেন একটি বড় সংখ্যার অংশ হতে পারে না৷
সম্পূর্ণ সূত্রটি এই আকার নেয়:
=RegExpExtract(A5, "\(?\d{3}[-\. \)]*\d{3}[-\. ]?\d{4}\b")
অনুগ্রহ করে সচেতন থাকুন যে উপরের রেজেক্স কয়েকটি ফেরত দিতে পারে মিথ্যা-ইতিবাচক ফলাফল যেমন 123) 456 7899 বা (123 456 7899। নীচের সংস্করণটি এই সমস্যাগুলির সমাধান করে। যাইহোক, এই সিনট্যাক্সটি শুধুমাত্র VBA RegExp ফাংশনে কাজ করে, ক্লাসিক রেগুলার এক্সপ্রেশনে নয়।
প্যাটার্ন : (\(\d{3}\)দুটি অক্ষরের মধ্যে টেক্সট বের করার জন্য আউট দুটি স্ট্রিংয়ের মধ্যে পাঠ্য বের করার জন্যও কাজ করবে।
উদাহরণস্বরূপ, "টেস্ট 1" এবং "টেস্ট 2" এর মধ্যে সবকিছু পেতে, নিম্নলিখিত রেগুলার এক্সপ্রেশন ব্যবহার করুন।
প্যাটার্ন : পরীক্ষা 1(.*?)পরীক্ষা 2
সম্পূর্ণ সূত্রটি হল:
=AblebitsRegexExtract(A5, "test 1(.*?)test 2")
ইউআরএল থেকে ডোমেন বের করতে Regex
এমনকি রেগুলার এক্সপ্রেশনের সাথেও, ইউআরএল থেকে ডোমেন নাম বের করা কোনো তুচ্ছ কাজ নয়। কৌশলটি করে এমন মূল উপাদান হল নন-ক্যাপচারিং গ্রুপ। আপনার চূড়ান্ত লক্ষ্যের উপর নির্ভর করে, নীচের রেজেক্সগুলির মধ্যে একটি বেছে নিন।
সাবডোমেন সহ একটি সম্পূর্ণ ডোমেন নাম পেতে
প্যাটার্ন : (?: https?\: