ক্যাপচারিং এবং গ্রুপিং
ক্যাপচার গ্রুপ (pattern) একটি সৃষ্টি গ্রুপ যে হয়েছে ক্যাপচার সম্পত্তি।
এমন একটি সম্পর্কিত যা আপনি প্রায়শই দেখতে পাবেন (এবং ব্যবহার করুন) (?:pattern), যা সম্পত্তি ক্যাপচার না করেই একটি গোষ্ঠী তৈরি করে, যার ফলে নন-ক্যাপচারিং গ্রুপটির নাম দেওয়া হয়েছে ।
একটি গ্রুপ সাধারণত ব্যবহৃত হয় যখন আপনাকে প্যাটার্নগুলির ক্রম পুনরাবৃত্তি করতে হবে, উদাহরণস্বরূপ (\.\w+)+, বা বিকল্পটি কোথায় কার্যকর হওয়া উচিত তা নির্দিষ্টকরণের জন্য ^(0*1|1*0)$( যেমন ^, তারপরে 0*1বা 1*0, তারপরে $) বনাম ^0*1|1*0$( ^0*1বা 1*0$)।
দলবদ্ধকরণ বাদে একটি ক্যাপচারিং গোষ্ঠী ক্যাপচারিং গ্রুপের অভ্যন্তরে প্যাটার্নের সাথে মিলেছে এমন পাঠ্যও রেকর্ড করবে (pattern)। আপনার উদাহরণ ব্যবহার করে, (.*):, .*ম্যাচ ABCএবং :ম্যাচ :এবং যেহেতু .*গ্রুপ ক্যাপচার ভিতরে (.*), টেক্সট ABCক্যাপচারিং গ্রুপ 1 এর জন্য নথিভুক্ত করা হয়।
দল নম্বর
পুরো প্যাটার্নটি গ্রুপ নম্বর 0 হিসাবে সংজ্ঞায়িত করা হয়েছে।
প্যাটার্নে যে কোনও ক্যাপচারিং গোষ্ঠী ১ থেকে সূচীকরণ শুরু করে The সূচকগুলি ক্যাপচারিং গ্রুপগুলির উদ্বোধনী বন্ধনীগুলির ক্রম দ্বারা সংজ্ঞায়িত করা হয় । উদাহরণস্বরূপ, নীচের প্যাটার্নে এখানে সমস্ত 5 টি ক্যাপচারিং গ্রুপ রয়েছে:
(group)(?:non-capturing-group)(g(?:ro|u)p( (nested)inside)(another)group)(?=assertion)
| | | | | | || | |
1-----1 | | 4------4 |5-------5 |
| 3---------------3 |
2-----------------------------------------2
গ্রুপ নম্বরগুলি \nপ্যাটার্নে এবং $nপ্রতিস্থাপনের স্ট্রিংয়ে ব্যাক-রেফারেন্সে ব্যবহৃত হয় ।
অন্যান্য রেগেক্স স্বাদে (পিসিআরই, পার্ল), সেগুলি সাব-রুটিন কলগুলিতেও ব্যবহৃত হতে পারে ।
আপনি নির্দিষ্ট গোষ্ঠীর সাথে মেলে এমন পাঠ্যটি অ্যাক্সেস করতে পারেন Matcher.group(int group)। গ্রুপ নম্বরগুলি উপরে বর্ণিত বিধি দ্বারা চিহ্নিত করা যেতে পারে।
কিছু রেগেক্স স্বাদে (পিসিআরই, পার্ল), একটি শাখা পুনরায় সেট করার বৈশিষ্ট্য রয়েছে যা আপনাকে বিকল্পের বিভিন্ন শাখায় গ্রুপগুলি ক্যাপচারের জন্য একই নম্বর ব্যবহার করতে দেয় ।
দলের নাম
জাভা 7 থেকে, আপনি একটি নামকৃত ক্যাপচারিং গোষ্ঠীকে সংজ্ঞায়িত (?<name>pattern)করতে পারেন এবং এর সাথে মিলে যাওয়া সামগ্রীটি অ্যাক্সেস করতে পারেন Matcher.group(String name)। রেজেক্স দীর্ঘতর, তবে কোডটি আরও অর্থবহ, কারণ এটি আপনাকে বোঝায় যে রেজেক্সের সাথে কী মিলছে বা উত্তোলনের চেষ্টা করছেন।
গোষ্ঠীর নামগুলি \k<name>প্যাটার্নে এবং ${name}প্রতিস্থাপনের স্ট্রিংয়ে ব্যাক-রেফারেন্সে ব্যবহৃত হয় ।
নামযুক্ত ক্যাপচারিং গ্রুপগুলি এখনও একই নম্বর স্কিমের সাথে নম্বরযুক্ত, সুতরাং সেগুলি দিয়েও অ্যাক্সেস করা যায় Matcher.group(int group)।
অভ্যন্তরীণভাবে, জাভা বাস্তবায়ন কেবল নাম থেকে গ্রুপ নম্বরে মানচিত্র। অতএব, আপনি 2 টি ভিন্ন ক্যাপচারিং গ্রুপের জন্য একই নাম ব্যবহার করতে পারবেন না।