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

জাভা রেগুলার এক্সপ্রেশন: গ্রুপ সংখ্যা গণনা (groupCount())


ক্যাপচারিং গ্রুপ ও groupCount()

রেগেক্সে প্যারেনথেসিস `(...)` দিয়ে ক্যাপচারিং গ্রুপ তৈরি করা হয়। Matcher.groupCount() মেথড বর্তমান ম্যাচে কতটি ক্যাপচারিং গ্রুপ আছে তা রিটার্ন করে। গ্রুপ ০ (পুরো ম্যাচ) গণনায় থাকে না।

কোড উদাহরণ

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

public class GroupCountExample {
    public static void main(String[] args) {
        String str1 = "

This is an example HTML script where ever alternative word is bold

."; // বোল্ড ট্যাগের কন্টেন্ট ম্যাচ করার রেজেক্স (৩টি গ্রুপ) String regex = "(t(\\S+)t)(\\s)"; String str = "the words tit tat tweet tostff tact that tilt text. start and end with the letter t "; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); while (matcher.find()) { System.out.println(matcher.group(0)); // পুরো ম্যাচ } System.out.println("মোট ক্যাপচারিং গ্রুপ: " + matcher.groupCount()); } }

আউটপুট

tit
tat
tweet
tact
that
tilt
text
tart
মোট ক্যাপচারিং গ্রুপ: 3

ব্যাখ্যা

রেজেক্স `(t(\\S+)t)(\\s)` তিনটি ক্যাপচারিং গ্রুপ থাকে:

  1. (t(\\S+)t) — আউটার গ্রুপ (গ্রুপ ১)
  2. (\\S+) — ইনার গ্রুপ (গ্রুপ ২)
  3. (\\s) — হোয়াইটস্পেস গ্রুপ (গ্রুপ ৩)

`groupCount()` রিটার্ন করে ৩। গ্রুপ ০ (পুরো ম্যাচ) গণনায় নেই।

গ্রুপ নম্বরিং নিয়ম

  • গ্রুপ নম্বরিং বাম প্যারেনথেসিসের ক্রম অনুযায়ী (লেফট-টু-রাইট)।
  • নেস্টেড গ্রুপে আউটার প্রথম, তারপর ইনার।
  • নন-ক্যাপচারিং গ্রুপ `(?:...)` গণনায় আসে না।
  • নেমড গ্রুপ `(?<name>...)`ও গ্রুপ কাউন্টে যোগ হয় (নাম দিয়েও, নম্বর দিয়েও অ্যাক্সেস করা যায়)।

MatchResult.groupCount()

matcher.toMatchResult().groupCount() দিয়েও একই মান পাওয়া যায়। এটি ইমিউটেবল ম্যাচ রেজাল্ট অবজেক্ট থেকে গ্রুপ কাউন্ট পাওয়ার উপায়।

সারসংক্ষেপ

`groupCount()` রেগেক্স প্যাটার্নে কতটি ক্যাপচারিং গ্রুপ আছে তা জানার দ্রুত উপায়। ডাইনামিক রেজেক্স প্রসেসিং, জেনেরিক পার্সার লিখার সময় এটি খুব উপকারী। মনে রাখুন: গ্রুপ ০ গণনায় নেই, নন-ক্যাপচারিং গ্রুপও গণনায় নেই।

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

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

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

  4. পাইথন রেগুলার এক্সপ্রেশনে ক্যাপচার গ্রুপের সংখ্যা কীভাবে পাবেন?