কম্পিউটার টিউটোরিয়াল

জাভা রেগুলার এক্সপ্রেশন: লজিক্যাল অপারেটর (XY, X|Y, (X))


জাভা রেগেক্সে ৩টি লজিক্যাল অপারেটর

  1. XY: X তারপর Y (কনক্যাটেনেশন / সিকোয়েন্স)
  2. X|Y: X অথবা Y (অল্টারনেশন / OR)
  3. (X): ক্যাপচারিং গ্রুপ

১. XY: X ফলোড বাই Y (সিকোয়েন্স)

দুই ক্যারেক্টার/প্যাটার্ন একসাথে ম্যাচ করে।

উদাহরণ: "am" ম্যাচ

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LogicalXYExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("ইনপুট টেক্সট লিখুন: ");
        String input = sc.nextLine();
        
        String regex = "am"; // 'a' তারপর 'm'
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        if (matcher.find()) {
            System.out.println("ম্যাচ হয়েছে");
        } else {
            System.out.println("ম্যাচ হয়নি");
        }
    }
}

আউটপুট

ইনপুট টেক্সট লিখুন: sample text
ম্যাচ হয়েছে

ইনপুট টেক্সট লিখুন: hello how are you
ম্যাচ হয়নি

২. X|Y: X অথবা Y (অল্টারনেশন)

দুই এক্সপ্রেশনের যেকোনো একটি ম্যাচ করলে হয়।

উদাহরণ: "Hello" বা "welcome" ম্যাচ

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LogicalOrExample {
    public static void main(String[] args) {
        String regex = "Hello|welcome";
        String input = "Hello how are you welcome to Tutorialspoint";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        
        int count = 0;
        while (matcher.find()) {
            count++;
        }
        
        System.out.println("ম্যাচের সংখ্যা: " + count);
    }
}

আউটপুট

ম্যাচের সংখ্যা: 2

৩. (X): ক্যাপচারিং গ্রুপ

প্যারেনথেসিস দিয়ে একাধিক ক্যারেক্টারকে একক ইউনিট হিসেবে ট്രീট করা হয়। গ্রুপ নম্বর দিয়ে (`group(1)`, `group(2)`) রেজাল্ট অ্যাক্সেস করা যায়।

উদাহরণ: তিনটি গ্রুপ

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CapturingGroupExample {
    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);
        
        if (matcher.find()) {
            System.out.println("গ্রুপ ০ (পুরো): " + matcher.group(0));
            System.out.println("গ্রুপ ১: " + matcher.group(1));
            System.out.println("গ্রুপ ২: " + matcher.group(2));
            System.out.println("গ্রুপ ৩: " + matcher.group(3));
        } else {
            System.out.println("NO MATCH");
        }
    }
}

আউটপুট

ইনপুট টেক্সট লিখুন: sample data with 1234 (digits) in middle
গ্রুপ ০ (পুরো): sample data with 1234 (digits) in middle
গ্রুপ ১: sample data with 123
গ্রুপ ২: 4
গ্রুপ ৩: (digits) in middle

সারসংক্ষেপ

লজিক্যাল অপারেটরগুলো রেগেক্সের ফান্ডামেন্টাল: XY সিকোয়েন্স, X|Y অল্টারনেশন, (X) গ্রুপিং। এগুলো কম্বাইন করে যেকোনো জটিল প্যাটার্ন তৈরি করা যায়। অল্টারনেশনে `|` অপারেটর লো プロিয়োরিটি রাখে, তাই গ্রুপিং `(X|Y)` দিয়ে প্রায়োরিটি কন্ট্রোল করুন।

  1. জাভা রেগুলার এক্সপ্রেশনে (?> re) সাব-এক্সপ্রেশন ব্যাখ্যা

  2. জাভা রেগুলার এক্সপ্রেশনে (?: re) সাব-এক্সপ্রেশন ব্যাখ্যা

  3. জাভা রেগুলার এক্সপ্রেশনে (re) সাব-এক্সপ্রেশন ব্যাখ্যা

  4. জাভাতে রেগুলার এক্সপ্রেশন ব্যবহার করে স্ট্রিং থেকে নম্বর বের করা