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