java.util.regex প্যাকেজের Matcher ক্লাসটি স্ট্রিংয়ের মধ্যে রেগুলার এক্সপ্রেশন প্যাটার্নের সাথে মেচিং করতে ব্যবহৃত হয়। এর দুটি গুরুত্বপূর্ণ মেথড replaceAll() এবং replaceFirst() স্ট্রিংয়ের মধ্যে মাচ করা অংশগুলিকে রিপ্লেস করতে ব্যবহৃত হয়।
replaceAll(): এই মেথডটি স্ট্রিংয়ের মধ্যে সব মাচিং অংশকে নতুন মান দিয়ে রিপ্লেস করে।replaceFirst(): এই মেথডটি প্রথম মাচিং অংশকে রিপ্লেস করে এবং পরবর্তীতে আর কোনো মাচিং অংশকে রিপ্লেস করে না।
1. Matcher.replaceAll()
replaceAll() মেথডটি স্ট্রিংয়ের সব মাচিং অংশকে একটি নতুন স্ট্রিং দিয়ে রিপ্লেস করে। এটি স্ট্রিংয়ের সব মাচিং প্যাটার্ন খুঁজে বের করে এবং প্রতিটি মাচিং প্যাটার্নকে রিপ্লেস করার জন্য ব্যবহৃত একটি নতুন স্ট্রিং ব্যবহার করে।
Syntax:
String replaceAll(String replacement)
- replacement: এটি নতুন স্ট্রিং যা প্যাটার্ন মাচ করা অংশের পরিবর্তে ব্যবহার করা হবে।
উদাহরণ:
import java.util.regex.*;
public class ReplaceAllExample {
public static void main(String[] args) {
String input = "apple banana apple cherry apple";
String regex = "apple";
// Create a pattern and matcher
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
// Replace all occurrences of "apple" with "orange"
String result = matcher.replaceAll("orange");
// Print the result
System.out.println("Result: " + result);
}
}
আউটপুট:
Result: orange banana orange cherry orange
কোড বিশ্লেষণ:
- এখানে
"apple"শব্দটিreplaceAll()মেথড দ্বারা"orange"দিয়ে প্রতিস্থাপন করা হয়েছে। - স্ট্রিংয়ের সব
"apple"অংশ"orange"দিয়ে পরিবর্তিত হয়ে নতুন স্ট্রিং"orange banana orange cherry orange"তৈরি হয়েছে।
2. Matcher.replaceFirst()
replaceFirst() মেথডটি শুধুমাত্র প্রথম মাচিং অংশটিকে রিপ্লেস করে। এটি স্ট্রিংয়ের মধ্যে প্রথম মাচিং প্যাটার্ন খুঁজে বের করে এবং সেই মাচিং অংশকে রিপ্লেস করার জন্য নতুন স্ট্রিং ব্যবহার করে, কিন্তু পরবর্তী মাচিং অংশগুলো অপরিবর্তিত থাকে।
Syntax:
String replaceFirst(String replacement)
- replacement: এটি নতুন স্ট্রিং যা প্রথম মাচিং প্যাটার্নের পরিবর্তে ব্যবহার করা হবে।
উদাহরণ:
import java.util.regex.*;
public class ReplaceFirstExample {
public static void main(String[] args) {
String input = "apple banana apple cherry apple";
String regex = "apple";
// Create a pattern and matcher
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
// Replace the first occurrence of "apple" with "orange"
String result = matcher.replaceFirst("orange");
// Print the result
System.out.println("Result: " + result);
}
}
আউটপুট:
Result: orange banana apple cherry apple
কোড বিশ্লেষণ:
- এখানে
"apple"শব্দটির প্রথম উপস্থিতি"orange"দিয়ে প্রতিস্থাপন করা হয়েছে। - শুধুমাত্র
"apple"এর প্রথম মাচিং অংশ"orange"দিয়ে পরিবর্তিত হয়েছে, এবং পরবর্তী"apple"অংশ অপরিবর্তিত রয়েছে।
replaceAll() এবং replaceFirst() এর মূল পার্থক্য:
replaceAll():- এটি স্ট্রিংয়ের সব মাচিং অংশকে রিপ্লেস করে।
- এটি পূর্ণ স্ট্রিং স্ক্যান করে এবং সব মাচিং অংশগুলিকে রিপ্লেস করে।
replaceFirst():- এটি শুধুমাত্র প্রথম মাচিং অংশকে রিপ্লেস করে।
- এটি প্রথম মাচিং অংশ পাওয়া মাত্র সেটি রিপ্লেস করে, এরপর আর কোনো মাচিং অংশে পরিবর্তন আনে না।
Additional Example: Dynamic Replacement Using Groups
replaceAll() এবং replaceFirst() এর সাথে আপনি regex groups ব্যবহার করতে পারেন। গ্রুপ ব্যবহার করে আপনি মাচিং প্যাটার্নের বিভিন্ন অংশকে বের করে এবং তা রিপ্লেস করতে পারেন।
Example with Group Replacement:
import java.util.regex.*;
public class GroupReplacementExample {
public static void main(String[] args) {
String input = "John: 123, Jane: 456, Jack: 789";
String regex = "(\\w+): (\\d+)"; // Matching name and number
// Create a pattern and matcher
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
// Replace with name and number reversed
String result = matcher.replaceAll("$2 - $1");
// Print the result
System.out.println("Result: " + result);
}
}
আউটপুট:
Result: 123 - John, 456 - Jane, 789 - Jack
কোড বিশ্লেষণ:
- এখানে,
"(\\w+): (\\d+)"রেগুলার এক্সপ্রেশন দুটি গ্রুপ ধরছে: নাম (\w+) এবং নম্বর (\d+)। replaceAll("$2 - $1")ব্যবহার করে, প্রথম গ্রুপ (নাম) এবং দ্বিতীয় গ্রুপ (নম্বর) উল্টে দেওয়া হয়েছে, যার ফলে123 - Johnপাওয়া গেছে।
Summary:
replaceAll()মেথড স্ট্রিংয়ের মধ্যে সব মাচিং অংশগুলিকে নতুন স্ট্রিং দিয়ে রিপ্লেস করে।replaceFirst()মেথড শুধুমাত্র প্রথম মাচিং অংশটিকে রিপ্লেস করে।- আপনি regex groups ব্যবহার করে মাচিং প্যাটার্নের অংশগুলোকেও রিপ্লেস করতে পারেন, যা আরও শক্তিশালী স্ট্রিং ম্যানিপুলেশন করতে সাহায্য করে।
এগুলো Java Regex এর অন্যতম গুরুত্বপূর্ণ ফিচার, যা স্ট্রিংয়ের মধ্যে ডাইনামিক এবং কার্যকরীভাবে প্যাটার্ন রিপ্লেসমেন্ট করতে সাহায্য করে।
Read more