Regular Expressions (RegEx) with NIO

Java Technologies - জাভা নিও (Java Nio)
114
114

Java NIO (New I/O) এর সাথে Regular Expressions (RegEx) ব্যবহার করা একটি শক্তিশালী উপায় টেক্সট প্যাটার্ন ম্যাচিং এবং ফাইল অথবা ডেটার মধ্যে প্যাটার্ন অনুসন্ধান করার জন্য। Java তে RegEx ব্যবহারের জন্য java.util.regex প্যাকেজের ক্লাসগুলো যেমন Pattern এবং Matcher ব্যবহার করা হয়।

নেক্সট, আমরা দেখবো কিভাবে Java NIO এর সাথে Regular Expressions (RegEx) ব্যবহার করা যায়, যেখানে NIO এর সুবিধা ব্যবহার করে ফাইল বা ডেটা স্ট্রিমের মধ্যে প্যাটার্ন ম্যাচিং করা যায়।


Regular Expressions (RegEx) এর মৌলিক ধারণা

Regular Expressions হল একটি টেক্সট প্যাটার্ন বা সিকোয়েন্স যা একটি বা একাধিক চরিত্রের জন্য মিলে যায়। Java তে RegEx ব্যবহারের জন্য Pattern ক্লাসের মাধ্যমে প্যাটার্ন কম্পাইল করা হয় এবং Matcher ক্লাসের মাধ্যমে সেই প্যাটার্নের সাথে মেলানো হয়। Pattern ক্লাস প্যাটার্ন গঠন করে এবং Matcher ক্লাস সেই প্যাটার্ন টেক্সটে প্রয়োগ করে ম্যাচিং চেক করে।

মৌলিক RegEx স্নিপেট:

  • \\d — সংখ্যা (0-9)।
  • \\w — অক্ষর (a-z, A-Z, 0-9, _)।
  • . — যেকোনো একক অক্ষর।
  • \\s — সাদা স্থান (space, tab)।
  • * — পূর্ববর্তী চরিত্রের শূন্য বা আরও উপস্থিতি।
  • + — পূর্ববর্তী চরিত্রের এক বা আরও উপস্থিতি।

Java NIO এবং RegEx ব্যবহার

১. ফাইলের মধ্যে প্যাটার্ন খোঁজা

Java NIO ব্যবহার করে ফাইলের মধ্যে প্যাটার্ন খোঁজা বেশ সহজ। আপনি Files ক্লাসের মাধ্যমে ফাইল পড়তে পারেন এবং RegEx ব্যবহার করে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে পারেন।

উদাহরণ: ফাইল থেকে নির্দিষ্ট প্যাটার্ন খোঁজা

import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;

public class RegexWithNIO {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt"); // ফাইল পাথ
        String pattern = "\\bjava\\b"; // 'java' শব্দ খুঁজতে RegEx প্যাটার্ন

        try {
            // ফাইলের সব লাইন পড়া
            Files.lines(path).forEach(line -> {
                // প্রতিটি লাইনে RegEx প্রয়োগ করা
                Matcher matcher = Pattern.compile(pattern).matcher(line);
                while (matcher.find()) {
                    System.out.println("Found: " + matcher.group() + " in line: " + line);
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এই উদাহরণে Files.lines(path) ব্যবহার করে ফাইলের প্রতিটি লাইন পড়া হচ্ছে।
  • Pattern.compile(pattern) এর মাধ্যমে RegEx প্যাটার্ন তৈরি করা হচ্ছে এবং matcher.find() মেথড ব্যবহার করে প্যাটার্নের সাথে মেলানো হচ্ছে।
  • \\bjava\\b প্যাটার্নটি পুরো শব্দ java খুঁজে বের করবে।

২. ফাইলের মধ্যে নির্দিষ্ট প্যাটার্নে ফিল্টারিং

Java NIO এর সাথে RegEx ব্যবহার করে ফাইলের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসারে ডেটা ফিল্টার করা যেতে পারে। এটি বড় ডেটাসেট বা লগ ফাইল বিশ্লেষণের জন্য খুবই কার্যকর।

উদাহরণ: লগ ফাইল থেকে নির্দিষ্ট ত্রুটি বার্তা খোঁজা

import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;

public class LogFileRegex {
    public static void main(String[] args) {
        Path path = Paths.get("server.log");
        String errorPattern = "ERROR\\s.*"; // 'ERROR' বার্তা খোঁজা

        try {
            // ফাইলের সব লাইন পড়া এবং ত্রুটি বার্তা ফিল্টার করা
            Files.lines(path).forEach(line -> {
                Matcher matcher = Pattern.compile(errorPattern).matcher(line);
                if (matcher.find()) {
                    System.out.println("Error Found: " + line);
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • ERROR\\s.* প্যাটার্নটি ERROR শব্দের পরে যেকোনো কিছু (যেমন ত্রুটি বার্তা) খুঁজে বের করবে।
  • Files.lines(path) ব্যবহার করে ফাইলের প্রতিটি লাইন পরীক্ষা করা হচ্ছে, এবং RegEx প্যাটার্নের সাথে ম্যাচ করলেই সেই লাইনের ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।

৩. Regex এবং NIO-র মাধ্যমে ফাইলের অংশে কাজ করা

Java NIO এর মাধ্যমে বড় ফাইলের একটি নির্দিষ্ট অংশে RegEx প্রয়োগ করা যেতে পারে। এই পদ্ধতিটি বিশেষভাবে বড় ডেটাসেট বা লগ ফাইল বিশ্লেষণের জন্য উপকারী।

উদাহরণ: ফাইলের নির্দিষ্ট অংশে RegEx প্রয়োগ করা

import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;

public class RegexInFilePart {
    public static void main(String[] args) {
        Path path = Paths.get("largefile.txt");
        String pattern = "\\d{3}-\\d{2}-\\d{4}"; // Social Security Number (SSN) প্যাটার্ন

        try {
            // ফাইলের প্রথম 10 লাইন পড়ে SSN খোঁজা
            Files.lines(path).limit(10).forEach(line -> {
                Matcher matcher = Pattern.compile(pattern).matcher(line);
                if (matcher.find()) {
                    System.out.println("Found SSN: " + matcher.group());
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Files.lines(path).limit(10) ব্যবহার করে প্রথম 10 লাইন পড়া হচ্ছে।
  • \\d{3}-\\d{2}-\\d{4} RegEx প্যাটার্নটি SSN নম্বর (যেমন 123-45-6789) খুঁজে বের করবে।

৪. Directory Traversal এবং RegEx

Java NIO ব্যবহার করে আপনি একটি ডিরেক্টরি ট্রাভার্স করে তার সমস্ত ফাইলের মধ্যে প্যাটার্ন অনুসন্ধান করতে পারেন।

উদাহরণ: ডিরেক্টরির সমস্ত ফাইলে প্যাটার্ন খোঁজা

import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;

public class DirectoryTraversal {
    public static void main(String[] args) {
        Path dir = Paths.get("my_directory");
        String pattern = "\\.txt$"; // .txt ফাইল এক্সটেনশনের জন্য RegEx

        try {
            Files.walk(dir)
                 .filter(p -> p.toString().matches(pattern)) // .txt ফাইল ফিল্টার করা
                 .forEach(file -> System.out.println("Text file found: " + file));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Files.walk(dir) দিয়ে ডিরেক্টরি ট্রাভার্স করা হচ্ছে এবং .txt এক্সটেনশনযুক্ত ফাইলগুলো RegEx দিয়ে ফিল্টার করা হচ্ছে।

Java NIO এর সাথে Regular Expressions (RegEx) ব্যবহার করে আপনি ফাইল বা ডিরেক্টরির মধ্যে প্যাটার্ন খুঁজতে, ফিল্টার করতে এবং বিশ্লেষণ করতে পারেন। Pattern এবং Matcher ক্লাসের মাধ্যমে সহজেই RegEx প্রয়োগ করা সম্ভব, এবং Files ক্লাসের সাহায্যে ফাইল সিস্টেমে ফাইল পড়া এবং ট্রাভার্স করা যায়। Java NIO এর এই শক্তিশালী সংমিশ্রণটি ফাইল সিস্টেম এবং ডেটা বিশ্লেষণের জন্য অত্যন্ত কার্যকরী।


Content added By

Pattern এবং Matcher Class এর ধারণা

123
123

Java NIO (New Input/Output) API মূলত I/O অপারেশন উন্নত করার জন্য তৈরি হলেও, Java-এর Pattern এবং Matcher ক্লাসগুলি java.util.regex প্যাকেজের অংশ। এই ক্লাসগুলি ব্যবহার করে আপনি regular expressions (regex) এর মাধ্যমে স্ট্রিং গুলি খুঁজে বের করতে, মানানসই করতে এবং সেগুলোর ওপর কাজ করতে পারেন। যদিও এই ক্লাসগুলি NIO এর অংশ নয়, কিন্তু Java NIO ব্যবহার করার সময় স্ট্রিং অপারেশনগুলোতে তাদের ব্যবহার খুবই গুরুত্বপূর্ণ হতে পারে, যেমন ফাইলের কনটেন্ট বা নেটওয়ার্ক ডেটার উপর রেগুলার এক্সপ্রেশন প্রয়োগ করা।

Pattern Class

Pattern ক্লাস Java regex এর মস্তিষ্ক। এটি একটি কম্পাইলড রেগুলার এক্সপ্রেশন যা পরবর্তী স্ট্রিং ম্যাচিং অপারেশনে ব্যবহার করা হয়। Pattern ক্লাসের মাধ্যমে রেগুলার এক্সপ্রেশন তৈরি করা হয় যা স্ট্রিং ম্যানিপুলেশন অপারেশনের জন্য সঠিক নিয়ম অনুসরণ করে।

Matcher Class

Matcher ক্লাস একটি Pattern অবজেক্টের সাহায্যে স্ট্রিংয়ের সাথে ম্যাচিং অপারেশন পরিচালনা করে। Matcher ক্লাসের বিভিন্ন মেথডের মাধ্যমে আপনি স্ট্রিংয়ের মধ্যে নির্দিষ্ট প্যাটার্ন অনুসন্ধান, রিপ্লেসমেন্ট বা ম্যাচিং করতে পারেন।


Pattern এবং Matcher Class এর মূল বৈশিষ্ট্য

১. Pattern Class

Pattern ক্লাস java.util.regex.Pattern প্যাকেজের অংশ এবং এটি রেগুলার এক্সপ্রেশন তৈরি ও কম্পাইল করার জন্য ব্যবহৃত হয়। রেগুলার এক্সপ্রেশন একটি প্যাটার্ন যা নির্দিষ্ট স্ট্রিংগুলিকে খুঁজে বের করতে, পরিবর্তন করতে বা যাচাই করতে সহায়তা করে। এই প্যাটার্নের জন্য আপনি একটি স্ট্রিং প্যাটার্ন নির্দিষ্ট করেন এবং এটি স্ট্রিংয়ের উপর প্রয়োগ করা হয়।

Pattern ক্লাসের মেথড:

  • compile(String regex): একটি রেগুলার এক্সপ্রেশন কম্পাইল করে একটি Pattern অবজেক্ট তৈরি করে।
  • matcher(CharSequence input): একটি স্ট্রিং অথবা চারসিকোয়েন্সের সাথে প্যাটার্ন ম্যাচিং করার জন্য একটি Matcher অবজেক্ট তৈরি করে।
  • matches(): একটি স্ট্রিং প্যাটার্নের সাথে পুরোপুরি ম্যাচ করে কিনা তা চেক করে।

Pattern Class উদাহরণ:

import java.util.regex.*;

public class PatternExample {
    public static void main(String[] args) {
        String regex = "abc";
        Pattern pattern = Pattern.compile(regex);

        // String to be searched
        String input = "abcabcabc";

        Matcher matcher = pattern.matcher(input);

        // Check if the pattern matches
        while (matcher.find()) {
            System.out.println("Found at index: " + matcher.start());
        }
    }
}

এখানে, "abc" প্যাটার্নটি "abcabcabc" স্ট্রিংয়ের মধ্যে খুঁজে বের করা হয়েছে এবং তার অবস্থান প্রিন্ট করা হয়েছে।

২. Matcher Class

Matcher ক্লাস Pattern ক্লাসের একটি অবজেক্ট যা একটি স্ট্রিংয়ের সাথে প্যাটার্ন মিলিয়ে ম্যাচিং অপারেশন পরিচালনা করে। আপনি Matcher ক্লাসের বিভিন্ন মেথড ব্যবহার করে রেগুলার এক্সপ্রেশন প্রয়োগ করতে পারেন।

Matcher ক্লাসের মেথড:

  • find(): এটি স্ট্রিংয়ের মধ্যে প্যাটার্ন খুঁজে পেলে true রিটার্ন করে।
  • start(): এটি একটি ম্যাচের শুরু অবস্থান রিটার্ন করে।
  • end(): এটি একটি ম্যাচের শেষ অবস্থান রিটার্ন করে।
  • group(): এটি ম্যাচ হওয়া স্ট্রিং রিটার্ন করে।

Matcher Class উদাহরণ:

import java.util.regex.*;

public class MatcherExample {
    public static void main(String[] args) {
        String regex = "(\\d+)";
        String input = "There are 123 apples and 456 oranges.";

        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            System.out.println("Found number: " + matcher.group());
        }
    }
}

এখানে, "\\d+" প্যাটার্নটি সংখ্যা খুঁজে বের করতে ব্যবহৃত হয়েছে এবং matcher.group() এর মাধ্যমে সেই সংখ্যা প্রিন্ট করা হচ্ছে।


Pattern এবং Matcher এর ব্যবহারের সুবিধা

১. ডাইনামিক স্ট্রিং প্যাটার্ন যাচাই

যদি আপনি কোনও ডেটা থেকে স্ট্রিং যাচাই করতে চান যেমন একটি ইউজার আইডি, ফোন নম্বর বা ইমেইল অ্যাড্রেস, রেগুলার এক্সপ্রেশন ব্যবহার করলে এটি অনেক সহজ এবং কার্যকরী হয়ে যায়।

২. টেক্সট প্রসেসিং এবং ম্যানিপুলেশন

Pattern এবং Matcher ক্লাসের মাধ্যমে আপনি টেক্সট প্রসেসিং করতে পারবেন, যেমন:

  • টেক্সট থেকে নির্দিষ্ট অংশ খুঁজে বের করা।
  • টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন প্রতিস্থাপন করা।
  • টেক্সট ফিল্টার করা।

৩. ফাইল অথবা নেটওয়ার্ক ডেটা প্রক্রিয়া

Java NIO তে আপনি যখন ফাইল বা নেটওয়ার্ক ডেটা পড়েন, তখন Pattern এবং Matcher ব্যবহার করে আপনি ডেটার মধ্যে প্যাটার্ন খুঁজে বের করতে পারেন, যেমন একটি লগ ফাইল থেকে নির্দিষ্ট বার্তা বা ডেটা খোঁজা।

৪. ফ্লেক্সিবল ডেটা এক্সট্রাকশন

Matcher ক্লাসের group() মেথড ব্যবহার করে আপনি একটি স্ট্রিং থেকে বিভিন্ন অংশ বের করতে পারেন, যেমন একটি ইমেইল ঠিকানা থেকে ইউজারনেম এবং ডোমেইন আলাদা করা।


Java-র Pattern এবং Matcher ক্লাসগুলি রেগুলার এক্সপ্রেশন পরিচালনা করার জন্য খুবই শক্তিশালী টুল। এগুলি স্ট্রিং প্রক্রিয়া ও বিশ্লেষণে ব্যাপকভাবে ব্যবহৃত হয়। আপনি Pattern ক্লাস ব্যবহার করে একটি রেগুলার এক্সপ্রেশন তৈরি করতে পারেন এবং তারপর Matcher ক্লাস ব্যবহার করে সেই প্যাটার্নের সাথে স্ট্রিংয়ের মিল খুঁজে বের করতে পারেন।

Java NIO এর সাথে কাজ করার সময় স্ট্রিং প্রসেসিং বা ডেটা ফিল্টার করার প্রয়োজন হলে, Pattern এবং Matcher ক্লাস একটি অত্যন্ত কার্যকরী পদ্ধতি প্রদান করে, যা ডেটার সাথে উচ্চ মানের টেক্সট ম্যানিপুলেশন করতে সাহায্য করে।


Content added By

Regular Expression এর মাধ্যমে Text Searching এবং Matching

86
86

Java NIO (Non-blocking I/O) হল Java এর I/O API যা বিভিন্ন ধরনের I/O অপারেশন পরিচালনা করতে সক্ষম। যদিও Java NIO সরাসরি Regular Expressions (RegEx) এর জন্য ডিজাইন করা হয়নি, তবে Java এর java.util.regex প্যাকেজের মাধ্যমে Regular Expressions এর ব্যবহার করা যায়। RegEx ব্যবহার করে আপনি খুব দ্রুত এবং কার্যকরভাবে টেক্সট অনুসন্ধান এবং ম্যাচিং করতে পারেন।

এখানে আমরা Java Regular Expression ব্যবহারের মাধ্যমে টেক্সট অনুসন্ধান এবং ম্যাচিংয়ের প্রক্রিয়া এবং Java NIO এর মধ্যে ফাইল থেকে ডেটা পড়ে তা ম্যাচিং কিভাবে করা যায়, তা উদাহরণ সহ দেখব।


১. Regular Expression এর সংজ্ঞা

Regular Expressions একটি প্যাটার্ন বা রুলের মাধ্যমে স্ট্রিংগুলোতে অনুসন্ধান এবং ম্যাচিং করার জন্য ব্যবহৃত হয়। আপনি একটি নির্দিষ্ট প্যাটার্নের জন্য স্ট্রিং খুঁজতে বা স্ট্রিং এর সাথে মেলানোর জন্য Regular Expression ব্যবহার করতে পারেন।

Java তে Regular Expressions এর জন্য java.util.regex প্যাকেজ ব্যবহার করা হয়, যেখানে Pattern এবং Matcher ক্লাস দুটি প্রধান ক্লাস যা RegEx প্যাটার্ন তৈরি এবং স্ট্রিংয়ে ম্যাচিং পরিচালনা করতে সহায়ক।


২. Pattern এবং Matcher ক্লাস

  • Pattern: এটি RegEx প্যাটার্ন তৈরি করতে ব্যবহৃত হয়। এটি একটি কম্পাইল করা Regular Expression।
  • Matcher: এটি একটি স্ট্রিংয়ের বিরুদ্ধে Pattern এর মাধ্যমে ম্যাচিং অপারেশন পরিচালনা করে।

উদাহরণ: Regular Expression ব্যবহার করে Text Matching

import java.util.regex.*;

public class RegExExample {
    public static void main(String[] args) {
        String text = "Hello, welcome to Java NIO programming!";

        // Regular Expression প্যাটার্ন তৈরি
        String regex = "Java"; // আমরা 'Java' শব্দটি খুঁজব
        
        // Pattern কম্পাইল করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি
        Matcher matcher = pattern.matcher(text);
        
        // Matcher দিয়ে ম্যাচিং পরীক্ষা করা
        if (matcher.find()) {
            System.out.println("Found a match: " + matcher.group());
        } else {
            System.out.println("No match found.");
        }
    }
}

এখানে, "Java" শব্দটি text স্ট্রিং এর মধ্যে খুঁজে বের করার জন্য Pattern এবং Matcher ব্যবহার করা হয়েছে। matcher.find() মেথডটি ডাটা স্ট্রিংয়ে একটি মেলা খুঁজে পেলে সত্য (true) ফেরত দেয়।


৩. File থেকে Text Search এবং Match করা

Java NIO এর মাধ্যমে ফাইলের মধ্যে টেক্সট খুঁজে বের করতে RegEx ব্যবহার করা যেতে পারে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি ফাইলের মধ্যে একটি নির্দিষ্ট প্যাটার্নের জন্য টেক্সট অনুসন্ধান করা হচ্ছে।

উদাহরণ: File থেকে Text Matching

import java.nio.file.*;
import java.util.regex.*;
import java.io.IOException;

public class FileSearchExample {
    public static void main(String[] args) {
        Path filePath = Paths.get("example.txt"); // ফাইলের পাথ
        String regex = "Java";  // আমরা 'Java' শব্দটি ফাইলের মধ্যে খুঁজব

        // ফাইল থেকে লাইন পড়া এবং RegEx দিয়ে টেক্সট ম্যাচিং করা
        try {
            Files.lines(filePath).forEach(line -> {
                // Pattern কম্পাইল করা
                Pattern pattern = Pattern.compile(regex);
                
                // Matcher তৈরি করা
                Matcher matcher = pattern.matcher(line);
                
                // টেক্সট মেলানোর চেষ্টা করা
                if (matcher.find()) {
                    System.out.println("Found match: " + matcher.group() + " in line: " + line);
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে, Files.lines() ব্যবহার করে ফাইল থেকে প্রতিটি লাইন পড়া হচ্ছে, এবং RegEx প্যাটার্ন দ্বারা প্রতিটি লাইনে "Java" শব্দটি খোঁজা হচ্ছে। যদি ম্যাচ পাওয়া যায়, তবে সেটি প্রিন্ট করা হবে।


৪. Pattern Matching এর আরও কিছু উদাহরণ

উদাহরণ ১: Email Address Match করা

ধরা যাক, আপনি একটি ফাইল বা টেক্সট স্ট্রিং থেকে বৈধ ইমেইল ঠিকানা খুঁজতে চান। এজন্য একটি RegEx প্যাটার্ন ব্যবহার করা যেতে পারে।

import java.util.regex.*;

public class EmailMatchExample {
    public static void main(String[] args) {
        String text = "Please contact us at support@example.com or info@domain.com";
        
        // Email প্যাটার্ন
        String regex = "[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}";
        
        // Pattern কম্পাইল করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // Email গুলো খুঁজে বের করা
        while (matcher.find()) {
            System.out.println("Found email: " + matcher.group());
        }
    }
}

এখানে, একটি RegEx প্যাটার্ন দিয়ে ইমেইল অ্যাড্রেস খোঁজা হয়েছে এবং matcher.find() দিয়ে সমস্ত বৈধ ইমেইল ঠিকানা প্রিন্ট করা হয়েছে।

উদাহরণ ২: Phone Number Match করা

ফোন নাম্বার যাচাই করার জন্য একটি সাধারণ RegEx প্যাটার্ন ব্যবহার করা যেতে পারে।

import java.util.regex.*;

public class PhoneNumberMatchExample {
    public static void main(String[] args) {
        String text = "Call me at 123-456-7890 or 987-654-3210";

        // Phone number প্যাটার্ন
        String regex = "\\d{3}-\\d{3}-\\d{4}"; // Format: 123-456-7890
        
        // Pattern কম্পাইল করা
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি করা
        Matcher matcher = pattern.matcher(text);
        
        // Phone numbers খোঁজা
        while (matcher.find()) {
            System.out.println("Found phone number: " + matcher.group());
        }
    }
}

এখানে, ফোন নাম্বারের জন্য একটি RegEx প্যাটার্ন ব্যবহার করা হয়েছে যা ৩ ডিজিট-৩ ডিজিট-৪ ডিজিটের ফরম্যাটে ফোন নম্বর খুঁজবে।


Java Regular Expressions (RegEx) ব্যবহারের মাধ্যমে টেক্সট অনুসন্ধান এবং ম্যাচিং প্রক্রিয়া করা অনেক সহজ। Java NIO এর মাধ্যমে ফাইলের মধ্যে টেক্সট অনুসন্ধান করার জন্য Pattern এবং Matcher ব্যবহার করে আপনি বিভিন্ন ধরনের টেক্সট অনুসন্ধান এবং মেলানো কাজ করতে পারবেন। আপনি ইমেইল, ফোন নাম্বার বা অন্যান্য প্যাটার্নগুলোর জন্য RegEx প্যাটার্ন ব্যবহার করে সিস্টেমে কার্যকরীভাবে ডেটা বিশ্লেষণ করতে পারবেন।


Content added By

উদাহরণ সহ RegEx ব্যবহার করে Text Processing

91
91

Java NIO (New I/O) এর সাথে Regular Expressions (RegEx) ব্যবহার করে টেক্সট প্রোসেসিং একটি শক্তিশালী টুল, যা ডেটাতে প্যাটার্ন অনুসন্ধান এবং টেক্সট ম্যানিপুলেশনকে সহজ করে তোলে। Java তে RegEx এর মাধ্যমে আপনি টেক্সট ফিল্টারিং, টেক্সট ভ্যালিডেশন, টেক্সট রিপ্লেসমেন্ট, টেক্সট ম্যানিপুলেশন ইত্যাদি কার্যকরভাবে করতে পারেন।

Java NIO তে RegEx ব্যবহার করা হয় সাধারণত Pattern এবং Matcher ক্লাসের মাধ্যমে। Pattern ক্লাস RegEx প্যাটার্ন তৈরি করে, এবং Matcher ক্লাস সেই প্যাটার্নকে টেক্সটে প্রয়োগ করে।

এখানে আমরা কিছু সাধারণ উদাহরণ দেখব, যেখানে Java NIO এবং RegEx এর মাধ্যমে টেক্সট প্রোসেসিং করা হয়েছে।


১. Pattern এবং Matcher ক্লাসের পরিচিতি

  • Pattern: এটি RegEx প্যাটার্ন তৈরি করে। প্যাটার্নটি ব্যবহার করে আপনি টেক্সটের মধ্যে নির্দিষ্ট ধরণের প্যাটার্ন খুঁজে পেতে পারেন।
  • Matcher: এটি Pattern কে টেক্সটে প্রয়োগ করে, এবং সেই টেক্সটের মধ্যে RegEx এর সাথে মিল রয়েছে কি না তা যাচাই করে।

২. উদাহরণ ১: RegEx ব্যবহার করে টেক্সট খোঁজা

এখানে আমরা একটি সাধারণ উদাহরণ দেখব যেখানে একটি টেক্সটে একটি নির্দিষ্ট শব্দ বা প্যাটার্ন খোঁজা হবে।

উদাহরণ: টেক্সট থেকে নির্দিষ্ট শব্দ খোঁজা

import java.nio.file.*;
import java.io.IOException;
import java.util.regex.*;

public class RegExSearchExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("example.txt");
        String text = new String(Files.readAllBytes(path));

        // Regular Expression প্যাটার্ন তৈরি করা
        String regex = "Java";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        // প্যাটার্ন মেলানোর চেষ্টা করা
        while (matcher.find()) {
            System.out.println("Found at index: " + matcher.start());
        }
    }
}

ব্যাখ্যা:

  • এখানে আমরা "Java" শব্দটি খুঁজে বের করার জন্য RegEx প্যাটার্ন তৈরি করেছি এবং তারপর Matcher.find() ব্যবহার করে সেই শব্দটি টেক্সটের মধ্যে খুঁজে পেয়েছি।
  • matcher.start() দিয়ে আমরা কোথায় সেই শব্দটি পাওয়া গেছে তা জানতে পারি।

৩. উদাহরণ ২: RegEx দিয়ে টেক্সট রিপ্লেসমেন্ট

RegEx ব্যবহার করে আপনি নির্দিষ্ট প্যাটার্নে থাকা টেক্সট অংশ পরিবর্তন করতে পারেন। এখানে আমরা একটি উদাহরণ দেখব, যেখানে একটি টেক্সট থেকে কিছু নির্দিষ্ট শব্দ পরিবর্তন করা হবে।

উদাহরণ: টেক্সটে শব্দ রিপ্লেস করা

import java.nio.file.*;
import java.io.IOException;
import java.util.regex.*;

public class RegExReplaceExample {
    public static void main(String[] args) throws IOException {
        Path path = Paths.get("example.txt");
        String text = new String(Files.readAllBytes(path));

        // Regular Expression প্যাটার্ন তৈরি করা
        String regex = "\\d+";  // এটি সব ডিজিট (সংখ্যা) খুঁজবে
        Pattern pattern = Pattern.compile(regex);
        
        // Matcher তৈরি এবং রিপ্লেসমেন্ট
        Matcher matcher = pattern.matcher(text);
        String modifiedText = matcher.replaceAll("[REDACTED]");  // সব সংখ্যাকে "[REDACTED]" দ্বারা রিপ্লেস করা

        System.out.println(modifiedText);
    }
}

ব্যাখ্যা:

  • এখানে আমরা "\d+" RegEx প্যাটার্ন ব্যবহার করেছি, যা সমস্ত ডিজিট (সংখ্যা) খুঁজে বের করবে।
  • replaceAll() মেথডের মাধ্যমে সমস্ত সংখ্যাকে [REDACTED] দিয়ে রিপ্লেস করেছি।

৪. উদাহরণ ৩: টেক্সট ভ্যালিডেশন

RegEx ব্যবহার করে আপনি ইনপুট টেক্সট বা ডেটার ভ্যালিডেশন করতে পারেন, যেমন ইমেইল ঠিকানা বা ফোন নম্বর যাচাই করা।

উদাহরণ: ইমেইল ভ্যালিডেশন

import java.util.regex.*;

public class EmailValidationExample {
    public static void main(String[] args) {
        String email = "test@example.com";

        // ইমেইল প্যাটার্ন
        String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);

        // ইমেইল যাচাই করা
        if (matcher.matches()) {
            System.out.println("Valid email address");
        } else {
            System.out.println("Invalid email address");
        }
    }
}

ব্যাখ্যা:

  • এখানে আমরা একটি RegEx প্যাটার্ন ব্যবহার করে ইমেইল ঠিকানা যাচাই করেছি।
  • matcher.matches() মেথডটি ইমেইল ঠিকানাটি প্যাটার্নের সাথে মিলছে কিনা তা পরীক্ষা করে।

৫. উদাহরণ ৪: টেক্সট থেকে নির্দিষ্ট অংশ বের করা

RegEx ব্যবহার করে আপনি একটি টেক্সটের মধ্যে থেকে নির্দিষ্ট অংশ বের করে আনার জন্য Matcher.group() মেথড ব্যবহার করতে পারেন।

উদাহরণ: টেক্সট থেকে ফোন নম্বর বের করা

import java.util.regex.*;

public class PhoneNumberExtractionExample {
    public static void main(String[] args) {
        String text = "My phone number is 123-456-7890.";

        // ফোন নম্বরের জন্য RegEx প্যাটার্ন
        String regex = "(\\d{3})-(\\d{3})-(\\d{4})";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        // ফোন নম্বর ম্যাচ হলে তা বের করা
        if (matcher.find()) {
            System.out.println("Phone number: " + matcher.group());
            System.out.println("Area Code: " + matcher.group(1));
            System.out.println("Central Office Code: " + matcher.group(2));
            System.out.println("Line Number: " + matcher.group(3));
        }
    }
}

ব্যাখ্যা:

  • এখানে আমরা একটি ফোন নম্বরের RegEx প্যাটার্ন ব্যবহার করেছি যা "###-###-####" ফরম্যাটে থাকা নম্বরটি খুঁজে বের করবে।
  • matcher.group() ব্যবহার করে পুরো ফোন নম্বর এবং প্রতিটি অংশ আলাদাভাবে বের করা হয়েছে।

Java NIO এর RegEx ব্যবহার করে টেক্সট প্রোসেসিং করার মাধ্যমে আপনি দ্রুত এবং কার্যকরভাবে টেক্সট অনুসন্ধান, রিপ্লেসমেন্ট, ভ্যালিডেশন এবং অন্যান্য প্রক্রিয়া করতে পারেন। Pattern এবং Matcher ক্লাসগুলি RegEx প্যাটার্ন তৈরি এবং টেক্সটে তা প্রয়োগ করার জন্য ব্যবহার করা হয়।

এগুলির মাধ্যমে আপনি যেমন ইমেইল ঠিকানা যাচাই, ফোন নম্বরের অংশ বের করা, এবং ডেটা ফিল্টারিং সহজেই করতে পারবেন। Java NIO তে RegEx আপনাকে টেক্সট প্রোসেসিংয়ের জন্য অত্যন্ত কার্যকরী এবং নমনীয় উপায় প্রদান করে।


Content added By
Promotion