সাবএক্সপ্রেশন/মেটাক্যারেক্টার "(?> re)" একটি স্বতন্ত্র প্যাটার্ন ম্যাচ করে ব্যাকট্র্যাকিং ছাড়া। এটিকে অটোমিক গ্রুপিং বা পজেসিভ গ্রুপিং ও বলা হয়। একবার এটি ম্যাচ করলে, রেগেক্স ইঞ্জিন সেটা থেকে ব্যাকট্র্যাক করে বিকল্প প্যাটার্ন চেষ্টা করে না।
উদাহরণ: ডিজিট ম্যাচিং
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.next();
String regex = "(?>[0-9])";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
boolean bool = matcher.find();
if (bool) {
System.out.print("ম্যাচ পাওয়া গেল");
} else {
System.out.print("ম্যাচ পাওয়া যায়নি");
}
}
}
আউটপুট
একটি স্ট্রিং দিন: 9848022338 ম্যাচ পাওয়া গেল
অটোমিক গ্রুপিংয়ের গুরুত্ব: জটিল রেগেক্স-এ ব্যাকট্র্যাকিং্স কারণে পারফরম্যান্স সমস্যা (ক্যাটাস্ট্রোফিক ব্যাকট্র্যাকিং) এড়াতে অটোমিক গ্রুপিং ব্যবহার করা হয়। একবার অটোমিক গ্রুপ ম্যাচ করলে, সেটা "সব বা কিছু না" ভাবেই কাজ করে।