রেগুলার এক্সপ্রেশন ব্যবহার করা

Clojure:
রেগুলার এক্সপ্রেশন ব্যবহার করা

কিভাবে:

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

বেসিক ম্যাচিং

একটা স্ট্রিং যদি একটি প্যাটার্নের সাথে মিলে যায় তা পরীক্ষা করার জন্য, re-matches ব্যবহার করুন। এটি সফল হলে পুরো মিল ফিরিয়ে দেয় অথবা অন্যথায় nil ফিরিয়ে দেয়।

(re-matches #"\d+" "123")  ;=> "123"
(re-matches #"\d+" "abc")  ;=> nil

প্যাটার্ন সন্ধান করা

প্যাটার্নের প্রথম উদাহরণ খুঁজে পাওয়ার জন্য, re-find হ’ল আপনার সেরা বন্ধু:

(re-find #"\d+" "Order 123")  ;=> "123"

গ্রুপ ক্যাপচার করা

আপনার প্যাটার্নে প্যারেনথেসিস ব্যবহার করে গ্রুপ ক্যাপচার করতে re-find ব্যবহার করুন:

(let [[_ area code] (re-find #"(1)?(\d{3})" "Phone: 123-4567")]
  (println "Area Code:" area "Code:" code))
;; আউটপুট: Area Code: nil Code: 123

গ্লোবাল সার্চ (সমস্ত ম্যাচ খুঁজে পাওয়া)

কিছু ভাষার মতো ক্লোজারের অন্তর্নির্মিত গ্লোবাল সার্চ নেই। বরং, সমস্ত ম্যাচের একটি অলস সিকোয়েন্স পেতে re-seq ব্যবহার করুন:

(re-seq #"\d+" "id: 123, qty: 456")  ;=> ("123" "456")

স্ট্রিং বিভাজন

একটি স্ট্রিংকে একটি প্যাটার্ন অনুসারে বিভক্ত করতে, clojure.string/split ব্যবহার করুন:

(clojure.string/split "John,Doe,30" #",")  ;=> ["John" "Doe" "30"]

প্রতিস্থাপন

একটি স্ট্রিংয়ের যে কোনো অংশ যা একটি প্যাটার্নের সাথে মিলে যায় তাকে clojure.string/replace দ্বারা প্রতিস্থাপন করুন:

(clojure.string/replace "2023-04-01" #"\d{4}" "YYYY")  ;=> "YYYY-04-01"

তৃতীয় পক্ষের লাইব্রেরি

যদিও ক্লোজারের অন্তর্নির্মিত সমর্থন বেশিরভাগ মামলার জন্য যথেষ্ট, আরও জটিল সিনারিওর জন্য, বুদ্ধিমত্তার সাথে ডাটা ভ্যালিডেশনের জন্য clojure.spec এবং ওয়েব অ্যাপ্লিকেশনগুলিতে regex-ভিত্তিক রাউটিং এবং ইনপুট ভ্যালিডেশনের সাথে রিঅ্যাকটিভ DOM ম্যানিপুলেশনের জন্য reagent এর মতো লাইব্রেরিগুলি ব্যবহার করার কথা ভাবুন।

;; একটি ইমেইল বৈধ করে দেখার জন্য clojure.spec ব্যবহারের উদাহরণ
(require '[clojure.spec.alpha :as s])
(s/def ::email (s/and string? #(re-matches #".+@.+\..+" %)))
(s/valid? ::email "[email protected]")  ;=> true

মনে রাখবেন, রেগুলার এক্সপ্রেশন যখন শক্তিশালী, তখন তা কোড পড়া এবং রক্ষণাবেক্ষণ করা কঠিন করে তোলে। এগুলি বিবেচনাপূর্বক ব্যবহার করুন এবং সম্ভব হলে সরল স্ট্রিং ম্যানিপুলেশন ফাংশন বিবেচনা করুন।