MatchResult ইন্টারফেস
java.util.regex.MatchResult ইন্টারফেস ম্যাচের ফলাফল রিট্রিভ করার মেথডস প্রদান করে। Matcher.toMatchResult() কল করে `MatchResult` অবজেক্ট পাওয়া যায়।
প্রধান মেথডস
- start(): বর্তমান ম্যাচের শুরুতের ইনডেক্স (০-ভিত্তিক)।
- end(): বর্তমান ম্যাচের শেষের পরের ইনডেক্স (এক্সক্লুসিভ)।
- length = end() - start(): ম্যাচ করা সাবস্ট্রিংয়ের দৈর্ঘ্য।
কোড উদাহরণ: শেষ ম্যাচের পজিশন ও দৈর্ঘ্য
import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchPositionExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("ইনপুট টেক্সট লিখুন: ");
String input = sc.nextLine();
String regex = "\\d+"; // এক বা অধিক ডিজিট
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int start = 0, len = -1;
while (matcher.find()) {
start = matcher.start(); // ম্যাচের শুরু
len = matcher.end() - start; // ম্যাচের দৈর্ঘ্য
}
// MatchResult অবজেক্ট থেকে ও পাওয়া যায়
MatchResult res = matcher.toMatchResult();
System.out.println("MatchResult.start(): " + res.start());
System.out.println("MatchResult.end(): " + res.end());
System.out.println("দৈর্ঘ্য (end - start): " + (res.end() - res.start()));
System.out.println("ম্যাচের পজিশন: " + start);
System.out.println("ম্যাচের দৈর্ঘ্য: " + len);
}
}
আউটপুট উদাহরণ
ইনপুট টেক্সট লিখুন: sample data with digits 12345
MatchResult.start(): 24
MatchResult.end(): 29
দৈর্ঘ্য (end - start): 5
ম্যাচের পজিশন: 24
ম্যাচের দৈর্ঘ্য: 5
গ্রুপ-স্পেসিফিক পজিশন (start(int group), end(int group))
যদি রেজেক্সে ক্যাপচারিং গ্রুপ থাকে, তবে নির্দিষ্ট গ্রুপের পজিশন পাওয়া যায়:
String regex = "(.*)(\\d+)(.*)"; // ৩টি গ্রুপ
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
MatchResult res = matcher.toMatchResult();
System.out.println("গ্রুপ ১ (ডিজিট) শুরু: " + res.start(1));
System.out.println("গ্রুপ ১ (ডিজিট) শেষ: " + res.end(1));
System.out.println("গ্রুপ ১ দৈর্ঘ্য: " + (res.end(1) - res.start(1)));
}
ব্যবহারিক فعلىস্পেস
- সিনট্যাক্স হাইলাইটিং: এডিটরে ম্যাচ করা কীওয়ার্ড হাইলাইট করার জন্য পজিশন দরকার।
- টেক্সট এডিটর: ফাইন্ড/রিপ্লেস ডায়ালগে "পজিশন ১৫-২০ এ ম্যাচ পাওয়া গেল" দেখানোর জন্য।
- ডেটা এক্সট্রাকশন: ফিক্সড-উইডথ ফরম্যাট থেকে ফিল্ড বের করার জন্য।
- লগ অ্যানালিসিস: টাইমস্ট্যাম্প, লেভেল, মেসেজের পজিশন জানার জন্য।
সারসংক্ষেপ
`start()` এবং `end()` মেথডগুলো ম্যাচ করা টেক্সটের সঠিক লোকেশন জানতে সাহায্য করে। `MatchResult` ইন্টারফেস এই ইনফরমেশন একটি ক্লিন API-তে প্রদান করে। দৈর্ঘ্য বের করতে সবসময় `end() - start()` ব্যবহার করুন।