Toolyard

রেগেক্সের গোড়ার কথা: উদাহরণসহ শুরু করাদের একটি পথনির্দেশ

একটি রেগেক্স কী

একটি রেগুলার এক্সপ্রেশন হলো লেখা খোঁজার একটি ছক। cat “cat” অক্ষরগুলো যেকোনো জায়গায় খুঁজে পায়, “concatenate”-র ভেতরেও। বিশেষ অক্ষর ছকটিকে নির্দিষ্ট অক্ষরের বদলে লেখার ধরন বর্ণনা করতে দেয়।

গাঁথনিগুলো

.লাইন ভাঙা ছাড়া যেকোনো একটি অক্ষর
\d, \w, \sএকটি অঙ্ক; একটি অক্ষর, অঙ্ক কিংবা আন্ডারস্কোর; একটি ফাঁক, ট্যাব কিংবা লাইন ভাঙা
[aeiou], [^0-9]এই অক্ষরগুলোর যেকোনো একটি; অঙ্ক নয় এমন যেকোনো অক্ষর
*, +, ?আগে যা আছে তার শূন্য বা বেশি, এক বা বেশি, শূন্য বা এক
{3}, {2,4}ঠিক 3; 2 আর 4-র মধ্যে
^, $লেখার শুরু আর শেষ (কিংবা m নিশান দিলে প্রতিটি লাইনের)
\bএকটি শব্দের সীমানা: \bcat\b “cat” খুঁজে পায় কিন্তু “concatenate” নয়
( ), |একটি গুচ্ছ, যা একটি বদলে দেওয়ায় আবার ব্যবহার করা যায়; এটি কিংবা সেটি

একটি বিশেষ অক্ষরকেই মেলাতে তার সামনে একটি ব্যাকস্ল্যাশ বসান: \. একটি দাঁড়ি মেলায়।

উদাহরণ

  • \d{3}-\d{4} 555-0123-র মতো লেখা নম্বর খুঁজে পায়।
  • g আর m নিশান দিয়ে ^[ \t]+|[ \t]+$ প্রতিটি লাইনের শুরু আর শেষের ফাঁক আর ট্যাব খুঁজে পায়, যা কিছু না দিয়ে বদলে দেওয়ার জন্য তৈরি।
  • (\d{4})-(\d{2})-(\d{2})-কে $3/$2/$1 দিয়ে বদলে দিলে 2024-09-27 দাঁড়ায় 27/09/2024।

নিশান, আর লোভী মেলানো

g নিশান প্রথমটির বদলে প্রতিটি মিলই খুঁজে পায়, i বড়-ছোট হাতের অক্ষর ধরে না আর m ^ আর $-কে প্রতি লাইনে কাজ করায়। পরিমাণকগুলো লোভী: <.*> একটি লাইনে প্রথম < থেকে শেষ > পর্যন্ত মেলায়। যত আগে সম্ভব থামাতে ? জুড়ে দিন: <.*?>।

রেগেক্স পরখ-এ সঙ্গে সঙ্গে দাগিয়ে দেওয়া নিয়ে ছক দেখে নিন, যা জাভাস্ক্রিপ্টের গড়নই ব্যবহার করে, আর খুঁজে বদলে দিন-এ নিজের লেখায় সেগুলো কাজে লাগান।

রোজকার কাজের ছক

যা খুঁজতেছক
খালি লাইনm নিশান দিয়ে ^\s*$
পুনরাবৃত্ত ফাঁক {2,}, যা একটি ফাঁক দিয়ে বদলানো
বন্ধনীর ভেতরে যা-ই থাকে\([^)]*\)
একটি দাম\$\d+(\.\d{2})?
একটি HTML ট্যাগ<[^>]+>
একটি CSV লাইনের শেষ ঘরm নিশান দিয়ে [^,]+$

গুচ্ছ দিয়ে সাজিয়ে নেওয়া

(\w+), (\w+) খুঁজে $2 $1 দিয়ে বদলে দিলে একটি গোটা তালিকা জুড়ে “Smith, John” হয়ে যায় “John Smith”। প্রতিটি বন্ধনীর জোড়া বাঁ দিক থেকে নম্বর পায়, আর $0 হলো গোটা মিলটিই।

চেনা ভুল

  • একটি ফুটকি মানে যেকোনো কিছু — তা ভুলে যাওয়া। file.txt “fileXtxt”-ও মেলায়। লিখুন file\.txt।
  • লোভী পরিমাণক বেশি নিয়ে নেয়। দুটি উদ্ধৃতির সুতোওয়ালা একটি লাইনে ".*" প্রথম উদ্ধৃতি থেকে শেষটি পর্যন্ত মেলায়। ".*?" নিন।
  • প্রতিটি সরঞ্জামই একই গড়ন ব্যবহার করে ধরে নেওয়া। পিছনে-তাকানো, নাম দেওয়া গুচ্ছ আর অক্ষরের শ্রেণির ভেতরে \d জাভাস্ক্রিপ্ট, পাইথন, grep আর আপনার সম্পাদকে আলাদা।
  • একটির ভেতরে আরেকটি বসা গড়ন পড়তে চাওয়া। HTML, JSON আর কোডে এমন বাসা থাকে যা একটি রেগেক্স অনুসরণ করতে পারে না। একটি পার্সার নিন, আর রেগেক্স সমান লেখার জন্যই রাখুন।
  • একটি ছক আটকে যায়। (a+)+b-র মতো একটির ভেতরে আরেকটি বসা পরিমাণক একটি লম্বা না-মেলা লাইনে সূচকীয় সময় নিতে পারে। ছকটি সরল করুন।

এই গাইডের টুল

আরও গাইড