PHP में नियमित अभिव्यक्तियों में नामित समूह
मान लीजिए कि preg_match का उपयोग करके हम
तारीख को दिन, महीने और वर्ष में विभाजित करना चाहते हैं। इसके लिए
हम समूहों का उपयोग करेंगे:
<?php
$str = '2025-10-29';
$reg = '#(\d{4})-(\d{2})-(\d{2})#';
preg_match($reg, $str, $match);
var_dump($match); // ['2025-10-29', '2025', '10', '29' आउटपुट करेगा]
?>
जैसा कि आप देख रहे हैं, परिणामस्वरूप हमें एक सरणी मिलती है, जिसमें शून्यवें तत्व में पूरी तारीख होगी, पहले में - वर्ष, दूसरे में - महीना, तीसरे में - दिन।
हालांकि, कभी-कभी समूहों की सामग्री को एसोसिएटिव सरणी के रूप में प्राप्त करना सुविधाजनक होता। यानी हमारे मामले में ऐसी सरणी प्राप्त करना अच्छा रहेगा:
[
'year' => '2025',
'month' => '10',
'day' => '29'
]
इसके लिए नियमित अभिव्यक्तियों में एक विशेष
सिंटैक्स होता है। वह यह है: (?<name>pattern),
जहाँ pattern - नियमित अभिव्यक्ति है, और name
- समूह का नाम है।
आइए हम नामित समूहों के माध्यम से तारीख के लिए अपनी नियमित अभिव्यक्ति को फिर से लिखें:
<?php
$str = '2025-10-29';
$reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
preg_match($reg, $str, $match);
var_dump($match);
?>
परिणामस्वरूप, हमें एक एसोसिएटिव सरणी मिलेगी, जिसमें कुंजियाँ समूहों के नाम होंगे, और मान - वह होंगे जो उनमें आए:
[
'year' => '2025',
'month' => '10',
'day' => '29',
]
वास्तव में, परिणाम वाली सरणी में समूहों के मान
नाम के साथ-साथ क्रमिक संख्या से भी उपलब्ध होंगे।
यानी, उदाहरण के लिए,
वर्ष 'year' कुंजी के द्वारा
और 1 नंबर से उपलब्ध होगा,
महीना - 'month' कुंजी के द्वारा
और 2 नंबर से और इसी तरह आगे:
[
'year' => '2025',
'month' => '10',
'day' => '29',
1 => '2025',
2 => '10',
3 => '29'
]
वर्णित नामित समूहों के कुछ और
वैकल्पिक सिंटैक्स हैं: (?P<name>pattern)
और (?'name'pattern)।
समय के साथ एक स्ट्रिंग दी गई है:
<?php
$str = '12:59:59';
?>
घंटे, मिनट और सेकंड को अलग-अलग नामित समूहों में रखें।
एक फ़ंक्शन लिखें जो परिणाम वाली सरणी में सभी क्रमांकित समूहों को हटा दे, केवल नामित समूहों को छोड़कर।