Flags এর মাধ্যমে Pattern এর জন্য Configuration (CASE_INSENSITIVE, DOTALL, MULTILINE)

Pattern ক্লাসের মেথডসমূহ - জাভা রেজেক্স (Java Regex) - Java Technologies

309

Java Regular Expressions (Regex) ব্যবহারে প্যাটার্ন matching আরও কাস্টমাইজ করতে flags ব্যবহার করা যেতে পারে। Java এর Pattern ক্লাসে কিছু বিশেষ flags রয়েছে, যেগুলি প্যাটার্ন matching-এর আচরণ পরিবর্তন করতে সাহায্য করে, যেমন CASE_INSENSITIVE, DOTALL, এবং MULTILINE। এই flags-গুলো regex প্যাটার্নের matching behavior কাস্টমাইজ করতে ব্যবহৃত হয়।

Flags:

  1. CASE_INSENSITIVE (Pattern.CASE_INSENSITIVE):
    • এই flag ব্যবহার করলে, regex প্যাটার্নটি case-insensitive হয়ে যায়, অর্থাৎ বড় হাতের (uppercase) এবং ছোট হাতের (lowercase) অক্ষরের মধ্যে পার্থক্য করা হয় না।
    • এটি প্যাটার্ন matching-এর সময় case (বড় বা ছোট অক্ষর) উপেক্ষা করে।
  2. DOTALL (Pattern.DOTALL):
    • DOTALL flag ব্যবহার করলে, . (dot) symbol যেকোনো character (যেমন new line) কে মেলাবে। সাধারনত, . শুধুমাত্র সাধারণ characters যেমন alphabets, digits ইত্যাদি মেলে, কিন্তু DOTALL flag দিলে এটি newline character (\n) সহ সব ধরনের ক্যারেক্টার মেলে।
  3. MULTILINE (Pattern.MULTILINE):
    • MULTILINE flag ব্যবহার করলে, ^ এবং $ anchors স্ট্রিংয়ের প্রতিটি নতুন লাইনের শুরু এবং শেষের সাথে মিলে। সাধারনত, ^ এবং $ স্ট্রিংয়ের শুরু এবং শেষের সাথে মেলে, কিন্তু MULTILINE flag ব্যবহার করলে তা lines এর মধ্যে এবং শেষে মেলে।

Java Regex Example Using Flags (CASE_INSENSITIVE, DOTALL, MULTILINE):

এখানে আমরা একটি practical example দেখব যেখানে তিনটি flag ব্যবহার করা হবে—CASE_INSENSITIVE, DOTALL, এবং MULTILINE

Step 1: Using CASE_INSENSITIVE, DOTALL, and MULTILINE Flags with Pattern Matching

import java.util.regex.*;

public class RegexFlagsExample {
    public static void main(String[] args) {
        // Example text for testing
        String text = "Hello World!\nThis is a multiline text.\nThe quick brown fox jumps over the lazy dog.";

        // Case insensitive regex pattern
        String caseInsensitivePattern = "hello";

        // Dotall regex pattern (dot will match newline characters)
        String dotAllPattern = "fox.*dog";

        // Multiline regex pattern
        String multilinePattern = "^The";

        // Compile patterns with respective flags
        Pattern patternCaseInsensitive = Pattern.compile(caseInsensitivePattern, Pattern.CASE_INSENSITIVE);
        Pattern patternDotAll = Pattern.compile(dotAllPattern, Pattern.DOTALL);
        Pattern patternMultiline = Pattern.compile(multilinePattern, Pattern.MULTILINE);

        // Create matchers
        Matcher matcherCaseInsensitive = patternCaseInsensitive.matcher(text);
        Matcher matcherDotAll = patternDotAll.matcher(text);
        Matcher matcherMultiline = patternMultiline.matcher(text);

        // Case insensitive match
        System.out.println("Case Insensitive Match: " + matcherCaseInsensitive.find());

        // Dotall match (will match across newlines)
        System.out.println("Dotall Match (fox.*dog): " + matcherDotAll.find());

        // Multiline match (will match lines starting with "The")
        System.out.println("Multiline Match (^The): " + matcherMultiline.find());
    }
}

ব্যাখ্যা:

  1. Case Insensitive Matching:
    • Pattern.CASE_INSENSITIVE flag ব্যবহার করে আমরা hello প্যাটার্নটি বড় হাতের বা ছোট হাতের hello এর সাথে মেলাতে পারি।
  2. Dotall Matching:
    • Pattern.DOTALL flag ব্যবহার করে আমরা fox.*dog প্যাটার্নটি লাইনবিরতির (newline) মধ্যে মেলে এমন কোনো কিছু খুঁজতে পারি। অর্থাৎ, এটি fox থেকে dog পর্যন্ত যেকোনো কিছু মেলাবে, এমনকি যদি তারা আলাদা লাইনে থাকে।
  3. Multiline Matching:
    • Pattern.MULTILINE flag ব্যবহার করলে, ^The প্যাটার্নটি শুধুমাত্র স্ট্রিংয়ের শুরুতে নয়, বরং প্রতিটি নতুন লাইনের শুরুতে খুঁজবে।

Step 2: Output

Case Insensitive Match: true
Dotall Match (fox.*dog): true
Multiline Match (^The): true

আউটপুট ব্যাখ্যা:

  1. Case Insensitive Match: hello স্ট্রিংটি Hello (বড় হাতের H) এবং hello (ছোট হাতের h) এর সাথে মিলে গেছে, কারণ CASE_INSENSITIVE flag ব্যবহৃত হয়েছে।
  2. Dotall Match: fox.*dog প্যাটার্নটি নতুন লাইনসহ পুরো টেক্সটের মধ্যে মেলেছে, কারণ DOTALL flag ব্যবহৃত হয়েছে।
  3. Multiline Match: ^The প্যাটার্নটি টেক্সটের প্রতিটি নতুন লাইনের শুরুতে মিলেছে, কারণ MULTILINE flag ব্যবহৃত হয়েছে।

Other Possible Flags in Java Regex:

  1. UNICODE_CASE (Pattern.UNICODE_CASE):
    • Unicode ক্যারেক্টার matching করতে ব্যবহৃত হয়, যা আন্তর্জাতিক ক্যারেক্টার সেটের সঙ্গে কাজ করতে সহায়ক।
  2. COMMENTS (Pattern.COMMENTS):
    • এই flag regex প্যাটার্নে মন্তব্য (comments) যোগ করতে সাহায্য করে, যাতে regex এর মধ্যে আরও পরিষ্কার এবং পাঠযোগ্য করা যায়।
  3. LITERAL (Pattern.LITERAL):
    • এটি regex প্যাটার্নকে একটি সাধারণ literal string হিসেবে ব্যবহার করতে সাহায্য করে, যেখানে কোনও metacharacter ব্যবহার করা হয় না।

Java Regex এর flags ব্যবহার করে আপনি প্যাটার্ন matching-এর আচরণ কাস্টমাইজ করতে পারেন। CASE_INSENSITIVE, DOTALL, এবং MULTILINE হল কিছু গুরুত্বপূর্ণ flag যা Java Regex ব্যবহারকারীদের প্যাটার্ন matching এর মধ্যে অনেক flexibility দেয়। এগুলি স্ট্রিং matching এবং টেক্সট ম্যানিপুলেশনকে আরও শক্তিশালী ও কার্যকর করে তোলে, বিশেষত যখন আপনাকে বিভিন্ন ধরনের প্যাটার্ন মেলাতে বা টেক্সট ফর্ম্যাটিং করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...