এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুনExcel-এ টেক্সট নিয়ে কাজ করার সময় সবচেয়ে বেশি সময়সাপেক্ষ এবং হতাশাজনক কাজগুলির মধ্যে একটি পার্সিং - আলফানিউমেরিক "পোরিজ" কে উপাদানগুলিতে পার্স করা এবং এটি থেকে আমাদের প্রয়োজনীয় টুকরোগুলি বের করা। উদাহরণ স্বরূপ:

  • ঠিকানা থেকে জিপ কোড বের করা হচ্ছে (জিপ কোডটি সর্বদা শুরুতে থাকলে ভাল, কিন্তু তা না হলে কী হবে?)
  • ব্যাঙ্ক স্টেটমেন্টে পেমেন্টের বিবরণ থেকে চালানের নম্বর এবং তারিখ খুঁজে বের করা
  • প্রতিপক্ষের তালিকায় থাকা কোম্পানিগুলির মোটলি বিবরণ থেকে টিআইএন নিষ্কাশন
  • বিবরণে একটি গাড়ির নম্বর বা নিবন্ধ নম্বর অনুসন্ধান করুন, ইত্যাদি।

সাধারণত এই ধরনের ক্ষেত্রে, পাঠ্যটি ম্যানুয়ালি বাছাই করার আধা ঘন্টা পরে, এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করার জন্য চিন্তাভাবনা মাথায় আসতে শুরু করে (বিশেষত যদি প্রচুর ডেটা থাকে)। জটিলতা-দক্ষতার বিভিন্ন ডিগ্রী সহ বেশ কয়েকটি সমাধান রয়েছে:

  • ব্যবহার বিল্ট-ইন এক্সেল টেক্সট ফাংশন টেক্সট-কাট-আঠালো অনুসন্ধান করতে: LEVSIMV (বাম), অধিকার (ডানদিকে), পিএসটিআর (মাঝ), STsEPIT (শ্রেণীবদ্ধভাবে সংযুক্ত করা) এবং এর analogues, একসাথে (JOINTEXT), ঠিক (সঠিক) ইত্যাদি। এই পদ্ধতিটি ভাল যদি পাঠ্যে একটি স্পষ্ট যুক্তি থাকে (উদাহরণস্বরূপ, সূচকটি সর্বদা ঠিকানার শুরুতে থাকে)। অন্যথায়, সূত্রগুলি আরও জটিল হয়ে ওঠে এবং কখনও কখনও, এটি এমনকি অ্যারে সূত্রে আসে, যা বড় টেবিলে ব্যাপকভাবে ধীর হয়ে যায়।
  • ব্যবহার টেক্সট সাদৃশ্য অপারেটর মত একটি কাস্টম ম্যাক্রো ফাংশনে মোড়ানো ভিজ্যুয়াল বেসিক থেকে। এটি আপনাকে ওয়াইল্ডকার্ড অক্ষর (*, #,?, ইত্যাদি) ব্যবহার করে আরও নমনীয় অনুসন্ধান বাস্তবায়নের অনুমতি দেয় দুর্ভাগ্যবশত, এই টুলটি পাঠ্য থেকে পছন্দসই সাবস্ট্রিংটি বের করতে পারে না - শুধুমাত্র এটি এতে রয়েছে কিনা তা পরীক্ষা করুন।

উপরোক্ত ছাড়াও, আরও একটি পদ্ধতি রয়েছে যা পেশাদার প্রোগ্রামার, ওয়েব ডেভেলপার এবং অন্যান্য প্রযুক্তিবিদদের সংকীর্ণ চেনাশোনাগুলিতে খুব পরিচিত - এটি হল নিয়মিত অভিব্যক্তি (রেগুলার এক্সপ্রেশন = RegExp = “regexps” = “Regulars”)। সহজভাবে করা, RegExp হল এমন একটি ভাষা যেখানে বিশেষ অক্ষর এবং নিয়মগুলি পাঠ্যের প্রয়োজনীয় সাবস্ট্রিংগুলি অনুসন্ধান করতে, সেগুলি বের করতে বা অন্য পাঠ্যের সাথে প্রতিস্থাপন করতে ব্যবহৃত হয়. রেগুলার এক্সপ্রেশন হল একটি খুব শক্তিশালী এবং সুন্দর টুল যা টেক্সটের সাথে কাজ করার অন্য সব উপায়কে একটি ক্রম অনুসারে ছাড়িয়ে যায়। অনেক প্রোগ্রামিং ভাষা (C#, PHP, পার্ল, JavaScript…) এবং টেক্সট এডিটর (Word, Notepad++…) রেগুলার এক্সপ্রেশন সমর্থন করে।

মাইক্রোসফ্ট এক্সেল দুর্ভাগ্যবশত বক্সের বাইরে RegExp সমর্থন নেই, তবে এটি VBA দিয়ে সহজেই ঠিক করা যেতে পারে। ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন ডেভেলপার (বিকাশকারী) বা কীবোর্ড শর্টকাট অল্টার+F11. তারপর মেনু মাধ্যমে নতুন মডিউল সন্নিবেশ সন্নিবেশ - মডিউল এবং সেখানে নিম্নলিখিত ম্যাক্রো ফাংশনের পাঠ্য অনুলিপি করুন:

পাবলিক ফাংশন RegExpExtract(টেক্সট হিসাবে স্ট্রিং, প্যাটার্ন হিসাবে স্ট্রিং, ঐচ্ছিক আইটেম হিসাবে পূর্ণসংখ্যা = 1) স্ট্রিং হিসাবে ত্রুটি GoTo ErrHandl সেট regex = CreateObject("VBScript.RegExp") regex.Pattern = প্যাটার্ন regex.Global = True. (টেক্সট) তারপর ম্যাচগুলি সেট করুন = regex.Execute(Text) RegExpExtract = matches.Item(Item - 1) Exit Function End যদি ErrHandl: RegExpExtract = CVErr(xlErrValue) শেষ ফাংশন  

আমরা এখন ভিজ্যুয়াল বেসিক এডিটর বন্ধ করতে পারি এবং আমাদের নতুন বৈশিষ্ট্যটি চেষ্টা করার জন্য এক্সেলে ফিরে যেতে পারি। এর সিনট্যাক্স নিম্নরূপ:

=RegExpExtract( txt ; প্যাটার্ন ; আইটেম )

কোথায়

  • পাঠ্য – পাঠ্য সহ একটি ঘর যা আমরা পরীক্ষা করছি এবং যেখান থেকে আমরা আমাদের প্রয়োজনীয় সাবস্ট্রিং বের করতে চাই
  • প্যাটার্ন - সাবস্ট্রিং অনুসন্ধানের জন্য মাস্ক (প্যাটার্ন)
  • আইটেম - নিষ্কাশন করা সাবস্ট্রিংটির ক্রম সংখ্যা, যদি তাদের মধ্যে বেশ কয়েকটি থাকে (যদি নির্দিষ্ট করা না থাকে, তাহলে প্রথম ঘটনাটি প্রদর্শিত হয়)

এখানে সবচেয়ে আকর্ষণীয় জিনিসটি অবশ্যই, প্যাটার্ন - RegExp-এর "ভাষায়" বিশেষ অক্ষরের একটি টেমপ্লেট স্ট্রিং, যা নির্দিষ্ট করে যে আমরা ঠিক কী এবং কোথায় খুঁজতে চাই৷ আপনাকে শুরু করার জন্য এখানে সবচেয়ে মৌলিক বিষয়গুলি রয়েছে:

 প্যাটার্ন  বিবরণ
 . সবচেয়ে সহজ হল একটি বিন্দু। এটি নির্দিষ্ট অবস্থানে প্যাটার্নের যেকোনো অক্ষরের সাথে মেলে।
 s স্পেস (স্পেস, ট্যাব, বা লাইন ব্রেক) মত দেখায় যে কোন অক্ষর।
 S
পূর্ববর্তী প্যাটার্নের একটি বিরোধী বৈকল্পিক, অর্থাত্‍ যেকোন নন-হোয়াইটস্পেস অক্ষর৷
 d
যে কোনও নম্বর
 D
আগেরটির একটি অ্যান্টি-ভেরিয়েন্ট, অর্থাত্‍ কোন ডিজিট নয়৷
 w যেকোনো ল্যাটিন অক্ষর (AZ), অঙ্ক বা আন্ডারস্কোর
 W আগেরটির একটি বিরোধী বৈকল্পিক, অর্থাৎ ল্যাটিন নয়, একটি সংখ্যা নয় এবং একটি আন্ডারস্কোর নয়৷
[অক্ষর] বর্গাকার বন্ধনীতে, আপনি পাঠ্যের নির্দিষ্ট অবস্থানে অনুমোদিত এক বা একাধিক অক্ষর নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ শিল্প যেকোনো শব্দের সাথে মিলবে: টেবিল or চেয়ার.

এছাড়াও আপনি অক্ষর গণনা করতে পারবেন না, তবে তাদের একটি হাইফেন দ্বারা পৃথক করা একটি পরিসর হিসাবে সেট করুন, যেমন এর পরিবর্তে [ABDCDEF] লেখা [এএফ]. অথবা পরিবর্তে [4567] প্রবর্তন করা [-৪ ৭]. উদাহরণস্বরূপ, সমস্ত সিরিলিক অক্ষর মনোনীত করতে, আপনি টেমপ্লেট ব্যবহার করতে পারেন [a-yaA-YyoYo].

[^অক্ষর] যদি খোলার বর্গাকার বন্ধনীর পরে "ঢাকনা" চিহ্ন যোগ করুন ^, তারপর সেটটি বিপরীত অর্থ অর্জন করবে - পাঠ্যের নির্দিষ্ট অবস্থানে, তালিকাভুক্ত ব্যতীত সমস্ত অক্ষর অনুমোদিত হবে। হ্যাঁ, টেমপ্লেট [^ЖМ] খুঁজে পাবে পথ or পদার্থ or ভুলে যান, কিন্তু না ভয়ের or মিট, যেমন।
 | বুলিয়ান অপারেটর OR (বা) নির্দিষ্ট মানদণ্ডের জন্য পরীক্ষা করতে. উদাহরণ স্বরূপ (থেকেবৃহস্পতিবারএমনকি|চালনা) কোনো নির্দিষ্ট শব্দের জন্য পাঠ্য অনুসন্ধান করবে। সাধারণত, বিকল্পগুলির একটি সেট বন্ধনীতে আবদ্ধ থাকে।
 ^ লাইনের শুরু
 $ বাক্যের শেষে
 b শব্দের শেষ

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

  কোয়ান্টর  বিবরণ
 ? শূন্য বা এক ঘটনা। উদাহরণ স্বরূপ .? কোন একটি অক্ষর বা তার অনুপস্থিতির অর্থ হবে।
 + এক বা একাধিক এন্ট্রি। উদাহরণ স্বরূপ d+ মানে যেকোনো সংখ্যার সংখ্যা (যেমন 0 এবং অসীমের মধ্যে যেকোনো সংখ্যা)।
 * শূন্য বা তার বেশি ঘটনা, অর্থাত্ যেকোনো পরিমাণ। তাই s* মানে যেকোন সংখ্যক স্পেস বা কোন স্পেস নেই।
{সংখ্যা} or

{সংখ্যা 1,সংখ্যা 2}

আপনি যদি ঘটনার একটি কঠোরভাবে সংজ্ঞায়িত সংখ্যা নির্দিষ্ট করতে চান, তাহলে এটি কোঁকড়া ধনুর্বন্ধনীতে নির্দিষ্ট করা হয়। উদাহরণ স্বরূপ d{6} মানে কঠোরভাবে ছয় সংখ্যা, এবং প্যাটার্ন s{2,5} - দুই থেকে পাঁচটি স্পেস

এখন চলুন সবচেয়ে আকর্ষণীয় অংশে যাওয়া যাক - তৈরি করা ফাংশনের প্রয়োগের একটি বিশ্লেষণ এবং আমরা জীবনের ব্যবহারিক উদাহরণগুলির নিদর্শনগুলি সম্পর্কে কী শিখেছি।

পাঠ্য থেকে সংখ্যা বের করা হচ্ছে

শুরু করার জন্য, আসুন একটি সাধারণ কেস বিশ্লেষণ করি - আপনাকে আলফানিউমেরিক পোরিজ থেকে প্রথম সংখ্যাটি বের করতে হবে, উদাহরণস্বরূপ, মূল্য তালিকা থেকে নিরবচ্ছিন্ন বিদ্যুৎ সরবরাহের শক্তি:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

নিয়মিত অভিব্যক্তির পিছনে যুক্তিটি সহজ: d মানে যেকোন ডিজিট, এবং কোয়ান্টিফায়ার + বলে যে তাদের সংখ্যা এক বা একাধিক হওয়া উচিত। ফাংশনের সামনে ডবল বিয়োগ প্রয়োজন "উড়ে যাওয়া" নিষ্কাশিত অক্ষরগুলিকে সংখ্যা-এ-টেক্সট থেকে একটি পূর্ণ সংখ্যায় রূপান্তর করতে।

পিন কোড

প্রথম নজরে, এখানে সবকিছু সহজ - আমরা একটি সারিতে ঠিক ছয়টি সংখ্যা খুঁজছি। আমরা একটি বিশেষ চরিত্র ব্যবহার করি d ডিজিট এবং কোয়ান্টিফায়ারের জন্য ৭ {} অক্ষরের সংখ্যার জন্য:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

যাইহোক, একটি পরিস্থিতি সম্ভব যখন, লাইনের সূচকের বাম দিকে, একটি সারিতে সংখ্যার আরেকটি বড় সেট থাকে (ফোন নম্বর, টিআইএন, ব্যাঙ্ক অ্যাকাউন্ট, ইত্যাদি) তখন আমাদের নিয়মিত সিজন প্রথম 6টি বের করবে এটি থেকে অঙ্কগুলি, অর্থাৎ সঠিকভাবে কাজ করবে না:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

এটি যাতে না ঘটে তার জন্য, আমাদের রেগুলার এক্সপ্রেশনের প্রান্তের চারপাশে একটি মডিফায়ার যোগ করতে হবে b একটি শব্দের সমাপ্তি বোঝায়। এটি এক্সেলকে স্পষ্ট করে দেবে যে আমাদের যে খণ্ডটি (সূচী) প্রয়োজন তা একটি পৃথক শব্দ হওয়া উচিত, এবং অন্য একটি খণ্ডের (ফোন নম্বর) অংশ নয়:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

মোবাইল নাম্বার

টেক্সটে একটি ফোন নম্বর খোঁজার সমস্যা হল যে নম্বর লেখার জন্য অনেকগুলি বিকল্প রয়েছে - হাইফেন সহ এবং ছাড়া, স্পেস দিয়ে, বন্ধনীতে অঞ্চল কোড সহ বা ছাড়া ইত্যাদি। তাই, আমার মতে, এটি করা সহজ প্রথমে কয়েকটি নেস্টেড ফাংশন ব্যবহার করে সোর্স টেক্সট থেকে এই সমস্ত অক্ষরগুলি পরিষ্কার করুন সাবস্টিটিউট (প্রতিস্থাপন)যাতে এটি একটি একক পুরোতে একসাথে আটকে থাকে এবং তারপরে একটি আদিম নিয়মিত সহ d{11} একটি সারিতে 11টি সংখ্যা টানুন:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

আইটিএন

এটি এখানে একটু বেশি জটিল, কারণ টিআইএন (আমাদের দেশে) 10-সংখ্যা (আইনি সত্তার জন্য) বা 12-অঙ্কের (ব্যক্তিদের জন্য) হতে পারে। আপনি যদি বিশেষত দোষ খুঁজে না পান, তবে নিয়মিত সন্তুষ্ট হওয়া বেশ সম্ভব d{10,12}, কিন্তু, কঠোরভাবে বলতে গেলে, এটি 10 ​​থেকে 12 অক্ষর পর্যন্ত সমস্ত সংখ্যা বের করবে, অর্থাৎ এবং ভুলভাবে 11 সংখ্যা প্রবেশ করানো হবে। লজিক্যাল বা অপারেটর দ্বারা সংযুক্ত দুটি প্যাটার্ন ব্যবহার করা আরও সঠিক হবে | (উল্লম্ব বার):

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

অনুগ্রহ করে মনে রাখবেন যে ক্যোয়ারীতে আমরা প্রথমে 12-বিট নম্বরগুলি সন্ধান করি এবং শুধুমাত্র তারপর 10-বিট নম্বরগুলির জন্য। যদি আমরা আমাদের রেগুলার এক্সপ্রেশনটি অন্যভাবে লিখি, তাহলে এটি সবার জন্য, এমনকি দীর্ঘ 12-বিট টিআইএন, শুধুমাত্র প্রথম 10টি অক্ষরের জন্য টেনে আনবে। অর্থাৎ, প্রথম শর্তটি ট্রিগার হওয়ার পরে, আরও যাচাইকরণ আর সঞ্চালিত হয় না:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

এটি অপারেটরের মধ্যে মৌলিক পার্থক্য | একটি স্ট্যান্ডার্ড এক্সেল লজিক ফাংশন থেকে OR (বা), যেখানে যুক্তি পুনর্বিন্যাস ফলাফল পরিবর্তন করে না.

পণ্য এসকিউ

অনেক কোম্পানিতে, পণ্য এবং পরিষেবাগুলিতে অনন্য শনাক্তকারী নিয়োগ করা হয় - নিবন্ধ, SAP কোড, SKU, ইত্যাদি। যদি তাদের স্বরলিপিতে যুক্তি থাকে, তাহলে রেগুলার এক্সপ্রেশন ব্যবহার করে যেকোন টেক্সট থেকে সহজেই বের করা যেতে পারে। উদাহরণস্বরূপ, যদি আমরা জানি যে আমাদের নিবন্ধগুলি সর্বদা তিনটি বড় ইংরেজি অক্ষর, একটি হাইফেন এবং একটি পরবর্তী তিন-সংখ্যার সংখ্যা নিয়ে গঠিত, তাহলে:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

টেমপ্লেট পিছনে যুক্তি সহজ. [এজেড] - মানে ল্যাটিন বর্ণমালার যেকোনো বড় অক্ষর। পরবর্তী কোয়ান্টিফায়ার ৭ {} বলেছেন যে আমাদের জন্য এটি গুরুত্বপূর্ণ যে ঠিক তিনটি অক্ষর রয়েছে। হাইফেনের পরে, আমরা তিনটি সংখ্যার জন্য অপেক্ষা করছি, তাই আমরা শেষে যোগ করি d{3}

নগদ পরিমাণ

পূর্ববর্তী অনুচ্ছেদের অনুরূপভাবে, আপনি পণ্যের বর্ণনা থেকে মূল্য (খরচ, ভ্যাট …) বের করতে পারেন। যদি আর্থিক পরিমাণ, উদাহরণস্বরূপ, একটি হাইফেন দ্বারা নির্দেশিত হয়, তাহলে:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

প্যাটার্ন d কোয়ান্টিফায়ার সহ + একটি হাইফেন পর্যন্ত যেকোনো সংখ্যার জন্য অনুসন্ধান করে, এবং d{2} পরে পেনিস (দুই সংখ্যা) খুঁজবে।

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

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

গাড়ির প্লেট নম্বর

If you do not take special vehicles, trailers and other motorcycles, then the standard car number is parsed according to the principle “letter – three numbers – two letters – region code”. Moreover, the region code can be 2- or 3-digit, and only those that are similar in appearance to the Latin alphabet are used as letters. Thus, the following regular expression will help us to extract numbers from the text:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

সময়

HH:MM বিন্যাসে সময় বের করতে, নিম্নলিখিত রেগুলার এক্সপ্রেশনটি উপযুক্ত:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

কোলন টুকরা পরে [০-৫]ডি, যেহেতু এটি বের করা সহজ, 00-59 পরিসরে যেকোনো সংখ্যা সেট করে। বন্ধনীতে কোলনের আগে, দুটি প্যাটার্ন কাজ করে, একটি লজিক্যাল OR (পাইপ) দ্বারা পৃথক করা হয়:

  • [০-৫]ডি - 00-19 রেঞ্জের যেকোনো সংখ্যা
  • 2[0-3] - 20-23 রেঞ্জের যেকোনো সংখ্যা

প্রাপ্ত ফলাফলে, আপনি অতিরিক্তভাবে স্ট্যান্ডার্ড এক্সেল ফাংশন প্রয়োগ করতে পারেন (টীম)এটিকে একটি সময়ের বিন্যাসে রূপান্তর করতে যা প্রোগ্রামের কাছে বোধগম্য এবং আরও গণনার জন্য উপযুক্ত।

গোপন নাম্বার যাচাই

ধরুন সঠিকতার জন্য আমাদের ব্যবহারকারীদের দ্বারা উদ্ভাবিত পাসওয়ার্ডের তালিকা পরীক্ষা করতে হবে। আমাদের নিয়ম অনুযায়ী, পাসওয়ার্ডে শুধুমাত্র ইংরেজি অক্ষর (ছোট হাতের বা বড় হাতের) এবং সংখ্যা থাকতে পারে। স্পেস, আন্ডারস্কোর এবং অন্যান্য বিরাম চিহ্ন অনুমোদিত নয়।

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

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

আসলে, এই জাতীয় প্যাটার্নের সাথে আমাদের প্রয়োজন যে শুরুর মধ্যে (^) এবং শেষ ($) আমাদের পাঠ্যে বর্গাকার বন্ধনীতে দেওয়া সেট থেকে শুধুমাত্র অক্ষর ছিল। আপনি যদি পাসওয়ার্ডের দৈর্ঘ্য পরীক্ষা করতে চান (উদাহরণস্বরূপ, কমপক্ষে 6 অক্ষর), তারপর কোয়ান্টিফায়ার + ফর্মে "ছয় বা তার বেশি" ব্যবধান দ্বারা প্রতিস্থাপিত হতে পারে {6,:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

ঠিকানা থেকে শহর

ধরা যাক আমাদের ঠিকানা বার থেকে শহর টানতে হবে। নিয়মিত প্রোগ্রাম সাহায্য করবে, "g" থেকে পাঠ্য বের করে। পরবর্তী কমাতে:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

আসুন এই প্যাটার্নটি ঘনিষ্ঠভাবে দেখে নেওয়া যাক।

আপনি যদি উপরের লেখাটি পড়ে থাকেন, তাহলে আপনি ইতিমধ্যেই বুঝতে পেরেছেন যে রেগুলার এক্সপ্রেশনের কিছু অক্ষর (পিরিয়ড, তারকাচিহ্ন, ডলারের চিহ্ন ইত্যাদি) একটি বিশেষ অর্থ রয়েছে। আপনি যদি এই অক্ষরগুলি নিজেরাই সন্ধান করতে চান তবে সেগুলির আগে একটি ব্যাকস্ল্যাশ থাকে (কখনও কখনও বলা হয় সুরক্ষা কবচ) অতএব, খণ্ডটি অনুসন্ধান করার সময় "g"। আমাদের রেগুলার এক্সপ্রেশনে লিখতে হবে জনাব. যদি আমরা একটি প্লাস খুঁজছি, তারপর + ইত্যাদি।

আমাদের টেমপ্লেটের পরের দুটি অক্ষর, ডট এবং কোয়ান্টিফায়ার তারকাচিহ্ন, যেকোনো অক্ষরের যেকোনো সংখ্যার জন্য দাঁড়ায়, অর্থাৎ যেকোনো শহরের নাম।

টেমপ্লেটের শেষে একটি কমা আছে, কারণ আমরা "g" থেকে পাঠ্য খুঁজছি। একটি কমা থেকে কিন্তু লেখায় বেশ কিছু কমা থাকতে পারে, তাই না? শুধু শহরের পরেই নয়, রাস্তাঘাট, বাড়িঘর ইত্যাদির পরেও আমাদের অনুরোধ থেমে থাকবে কার ওপর? এর জন্যই প্রশ্নবোধক চিহ্ন। এটি ছাড়া, আমাদের রেগুলার এক্সপ্রেশনটি সম্ভাব্য দীর্ঘতম স্ট্রিং বের করবে:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

নিয়মিত অভিব্যক্তির ক্ষেত্রে, এই ধরনের একটি প্যাটার্ন হল "লোভী"। পরিস্থিতি সংশোধন করার জন্য, একটি প্রশ্নবোধক চিহ্নের প্রয়োজন - এটি কোয়ান্টিফায়ারকে পরিণত করে যার পরে এটি "কঙ্কুচিত" হয়ে দাঁড়িয়েছে - এবং আমাদের ক্যোয়ারী পাঠ্যটিকে শুধুমাত্র "g" এর পরে প্রথম কাউন্টার কমা পর্যন্ত নিয়ে যায়:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

সম্পূর্ণ পথ থেকে ফাইলের নাম

আরেকটি খুব সাধারণ পরিস্থিতি হল সম্পূর্ণ পাথ থেকে ফাইলের নাম বের করা। ফর্মের একটি সাধারণ রেগুলার এক্সপ্রেশন এখানে সাহায্য করবে:

এক্সেলে রেগুলার এক্সপ্রেশন (RegExp) সহ পাঠ্য পার্স করুন

এখানে কৌশলটি হল যে অনুসন্ধানটি, আসলে, বিপরীত দিকে ঘটে - শেষ থেকে শুরু পর্যন্ত, কারণ আমাদের টেমপ্লেটের শেষে $, এবং আমরা তার আগে ডান থেকে প্রথম ব্যাকস্ল্যাশ পর্যন্ত সবকিছু খুঁজছি। পূর্ববর্তী উদাহরণে বিন্দুর মত ব্যাকস্ল্যাশ এড়িয়ে গেছে।

PS

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

অন্যদের রেগুলার এক্সপ্রেশন বিশ্লেষণ এবং পার্স করতে বা আপনার নিজের ডিবাগ করতে, বেশ কিছু সুবিধাজনক অনলাইন পরিষেবা রয়েছে: RegEx101, RegExr এবং আরো

দুর্ভাগ্যবশত, ক্লাসিক রেগুলার এক্সপ্রেশনের সমস্ত বৈশিষ্ট্য VBA তে সমর্থিত নয় (উদাহরণস্বরূপ, বিপরীত অনুসন্ধান বা POSIX ক্লাস) এবং সিরিলিকের সাথে কাজ করতে পারে, তবে আমি মনে করি যে প্রথমবারের মতো যা আছে তা আপনাকে খুশি করার জন্য যথেষ্ট।

আপনি যদি এই বিষয়ে নতুন না হন, এবং আপনার কাছে শেয়ার করার কিছু থাকে, তাহলে নিচের মন্তব্যে Excel-এ কাজ করার সময় উপযোগী রেগুলার এক্সপ্রেশন রাখুন। এক মন ভালো, কিন্তু দুই বুট এক জোড়া!

  • SUBSTITUTE ফাংশন দিয়ে পাঠ্য প্রতিস্থাপন এবং পরিষ্কার করা
  • Search and highlighting of Latin characters in text
  • নিকটতম অনুরূপ পাঠ্যের জন্য অনুসন্ধান করুন (Ivanov = Ivonov = Ivanof, ইত্যাদি)

নির্দেশিকা সমন্ধে মতামত দিন