Java-তে Matcher.start() এবং Matcher.end() মেথড দুটি খুবই গুরুত্বপূর্ণ টুল যা java.util.regex.Matcher ক্লাসের মাধ্যমে ব্যবহার করা হয়। এগুলোর মাধ্যমে আপনি মেচিং অংশের অবস্থান বা matching location রানটাইমে খুঁজে পেতে পারেন।
Matcher.start() এবং Matcher.end():
start():- এই মেথডটি ম্যাচ করা অংশের শুরুর ইনডেক্স রিটার্ন করে। অর্থাৎ, যেখানে প্রথম মেলা শুরু হয়েছে সেই পজিশনের ইনডেক্স।
- উদাহরণস্বরূপ, যদি মেলে পাওয়া যায় প্রথম অবস্থানে, তবে
start()সেই পজিশনটি ফেরত দেবে।
end():- এই মেথডটি ম্যাচ করা অংশের শেষের ইনডেক্স রিটার্ন করে। এটি যে পজিশনে মেলানো শেষ হয়েছে তার ইনডেক্স প্রদান করে।
end()মেথডটি শুরুর পরবর্তী ইনডেক্স রিটার্ন করে, অর্থাৎ এটি মেলানো অংশের শেষের পরবর্তী চরিত্রের ইনডেক্স ফেরত দেয়।
উদাহরণ: Matcher.start() এবং Matcher.end() ব্যবহার
ধরা যাক, আমাদের একটি স্ট্রিং আছে এবং আমরা একটি প্যাটার্ন দিয়ে মেলানোর চেষ্টা করছি। start() এবং end() ব্যবহার করে আমরা মেচিং অংশের পজিশন বের করতে পারব।
import java.util.regex.*;
public class MatcherStartEndExample {
public static void main(String[] args) {
// Regular expression
String regex = "(\\b\\w+\\b)"; // Match any word
// Input string
String input = "Hello, welcome to Java programming.";
// Compile the regex pattern
Pattern pattern = Pattern.compile(regex);
// Create matcher object
Matcher matcher = pattern.matcher(input);
// Find matches and print their start and end positions
while (matcher.find()) {
int start = matcher.start(); // Get the start position of the match
int end = matcher.end(); // Get the end position of the match
System.out.println("Matched: " + matcher.group() + " at position: " + start + " to " + (end - 1));
}
}
}
কোড বিশ্লেষণ:
(\\b\\w+\\b): এটি একটি রেগুলার এক্সপ্রেশন যা একটি শব্দের (word) সাথে ম্যাচ করে। এখানে\\bশব্দের সীমানা (boundary) নির্দেশ করে এবং\\w+এক বা একাধিক অক্ষর (letters) বোঝায়।matcher.find(): এটি ইনপুট স্ট্রিংয়ের মধ্যে মাচিং প্যাটার্ন খুঁজে বের করে।matcher.start()এবংmatcher.end(): এই দুটি মেথড ব্যবহার করে, আমরা প্রতিটি ম্যাচের শুরুর এবং শেষ পজিশন জানতে পারি।start()মেথড শুরুর ইনডেক্স এবংend()মেথড শেষের পরবর্তী ইনডেক্স প্রদান করে।
আউটপুট:
Matched: Hello at position: 0 to 4
Matched: welcome at position: 7 to 13
Matched: to at position: 15 to 16
Matched: Java at position: 18 to 21
Matched: programming at position: 23 to 33
ব্যাখ্যা:
- প্রথম মেলানো অংশ
"Hello"শুরু হয়েছে ইনডেক্স 0-এ এবং শেষ হয়েছে ইনডেক্স 4 পর্যন্ত। (এখানে,end()মেথড 5 রিটার্ন করেছে, যা হল পরবর্তী চরিত্রের ইনডেক্স। তাই বাস্তবে "Hello" এর শেষ চরিত্রের ইনডেক্স হবে4।) - দ্বিতীয় মেলানো অংশ
"welcome"শুরু হয়েছে ইনডেক্স 7-এ এবং শেষ হয়েছে ইনডেক্স 13 পর্যন্ত। - এভাবেই প্রতিটি মাচিং অংশের পজিশন বের করা হয়েছে।
Matcher.start() এবং Matcher.end() এর আরও ব্যবহার:
- Multiple Matches:
- আপনি একাধিক ম্যাচের জন্য
find()মেথড ব্যবহার করতে পারেন এবং প্রতিটি ম্যাচের শুরুর এবং শেষ পজিশন নির্ধারণ করতে পারেন।
- আপনি একাধিক ম্যাচের জন্য
Finding Specific Groups:
- আপনি গ্রুপ ব্যবহার করে প্যাটার্নের নির্দিষ্ট অংশের জন্য শুরুর এবং শেষ পজিশন খুঁজে বের করতে পারেন।
উদাহরণ:
String regex = "(\\d+)"; String input = "There are 123 apples and 456 oranges."; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("Matched number: " + matcher.group(1) + " at position: " + matcher.start(1) + " to " + (matcher.end(1) - 1)); }আউটপুট:
Matched number: 123 at position: 10 to 12 Matched number: 456 at position: 27 to 29
সারাংশ:
Matcher.start()এবংMatcher.end()মেথডগুলি আপনি যখন রেগুলার এক্সপ্রেশন দিয়ে মাচিং অংশ খুঁজছেন, তখন সেই অংশের অবস্থান বা পজিশন বের করার জন্য ব্যবহার করতে পারেন।start()মেথডটি প্যাটার্নের প্রথম মেলার শুরুর ইনডেক্স দেয়, আরend()মেথডটি শেষের পরবর্তী ইনডেক্স দেয়।- এগুলো ব্যবহার করে আপনি টেক্সট প্রসেসিং, স্ট্রিং ম্যানিপুলেশন এবং ডেটা ভ্যালিডেশন কাজে বিশেষভাবে সুবিধা পাবেন।
Content added By
Read more