সাবএক্সপ্রেশন/মেটাক্যারেক্টার "()" রেগুলার এক্সপ্রেশন গ্রুপ করে এবং ম্যাচ করা টেক্সট মনে রাখে (ক্যাপচারিং গ্রুপ)। এই গ্রুপগুলো পরে ব্যাকরেফারেন্স (\1, \2 ইত্যাদি) বা matcher.group(n) দিয়ে এক্সেস করা যায়।
উদাহরণ ১: অল্টারনেশন সহ গ্রুপিং
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
String input = "Hello how are you welcome to Tutorialspoint";
String regex = "H(ell|ow)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println("ম্যাচ পাওয়া গেল");
} else {
System.out.println("ম্যাচ পাওয়া যায়নি");
}
}
}
আউটপুট
ম্যাচ পাওয়া গেল
ব্যাখ্যা: H(ell|ow) মানে "H" এবং তারপর "ell" অথবা "ow"। ইনপুটে "Hello" আছে, তাই "Hell" ম্যাচ করে (গ্রুপ ১ = "ell")।
উদাহরণ ২: সেন্টেন্সে ডিজিট খোঁজা (গ্রুপ ব্যবহার)
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String[] args) {
System.out.println("ইনপুট স্ট্রিং দিন: ");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// গ্রুপ ব্যবহার করে রেগুলার এক্সপ্রেশন
String regex = "(?:.*)(\\d+)(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
boolean bool = matcher.matches();
if (bool) {
System.out.println("ম্যাচ পাওয়া গেল");
} else {
System.out.println("ম্যাচ পাওয়া যায়নি");
}
}
}
আউটপুট
ইনপুট স্ট্রিং দিন: This is a 5363 test string ম্যাচ পাওয়া গেল
মনে রাখবেন: উদাহরণ ২-এ (?:.*) নন-ক্যাপচারিং গ্রুপ, (\\d+) ক্যাপচারিং গ্রুপ ১ (ডিজিটগুলো), (.*) ক্যাপচারিং গ্রুপ ২ (বাকি অংশ)।