PHP में रेगुलर एक्सप्रेशन के सेट के अंदर हाइफन

हाइफन - [] के अंदर एक विशेष प्रतीक भी है (लेकिन बाहर - नहीं)। यदि आपको हाइफन को स्वयं एक प्रतीक के रूप में चाहिए - तो उसे वहां रखें, जहां वह एक समूह विभाजक के रूप में नहीं समझा जाएगा।

यह महत्वपूर्ण क्यों है: आप स्वयं ध्यान दिए बिना प्रतीकों का एक समूह बना सकते हैं। उदाहरण के लिए, इस तरह - [:-@] - आप सोचते हैं कि आप कोलन, हाइफन और एट साइन चुन रहे हैं, जबकि वास्तव में : और @ के बीच के प्रतीकों का एक समूह बन जाता है। इस समूह में निम्नलिखित प्रतीक शामिल हैं: :, ;, ?, <, =, >।

ये कहाँ से आए? ASCII तालिका से - कोलन की संख्या एट साइन से कम होती है - और एक समूह बन जाता है। यानी सभी समूह ASCII तालिका के अनुसार बनते हैं (यदि चाहें तो आप इसका उपयोग कर सकते हैं)।

इससे कैसे निपटें: हाइफन प्रतीक को वहां रखें जहां यह निश्चित रूप से एक समूह प्रतीक के रूप में नहीं समझा जाएगा, उदाहरण के लिए, शुरुआत में या अंत में (यानी [ के बाद या ] से पहले)।

आप हाइफन को एस्केप भी कर सकते हैं - तब वह स्थान की परवाह किए बिना स्वयं को दर्शाएगा। उदाहरण के लिए, [:-@] के बजाय लिखें [:\-@] - और अब कोई समूह नहीं होगा, बल्कि तीन प्रतीक होंगे - कोलन, हाइफन और एट साइन @।

उदाहरण

निम्नलिखित उदाहरण में खोज पैटर्न इस प्रकार है: अंक 1, फिर 'a' से 'z' तक का अक्षर, फिर अंक 2:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[a-z]2#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! 1-2 ! !'

उदाहरण

आइए अब हाइफन को एस्केप करें। परिणामस्वरूप खोज पैटर्न इस प्रकार है: अंक 1, फिर अक्षर 'a', या हाइफन, या अक्षर 'z', फिर अंक 2:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[a\-z]2#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! ! 1c2 !'

उदाहरण

बिना एस्केप किए ही हाइफन को दूसरे स्थान पर रखा जा सकता है:

php<?php
  $str = '1a2 1-2 1c2 1z2';
  $res = preg_replace('#1[az-]2#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! ! 1c2 !'

उदाहरण

निम्नलिखित उदाहरण में खोज पैटर्न इस प्रकार है: पहला प्रतीक छोटे अक्षर या हाइफन '-' है, फिर दो अक्षर 'x':

php<?php
  $str = 'axx Axx -xx @xx';
  $res = preg_replace('#[a-z-]xx#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! Axx ! @xx'

उदाहरण

निम्नलिखित उदाहरण में खोज पैटर्न इस प्रकार है: पहला प्रतीक छोटे, बड़े अक्षर या हाइफन '-' है, फिर दो अक्षर 'x':

php<?php
  $str = 'axx Axx -xx @xx';
  $res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! ! ! @xx'

उदाहरण

हाइफन को दो समूहों के बीच रखा जा सकता है - वहां यह निश्चित रूप से एक और समूह नहीं बनाएगा:

php<?php
  $str = 'axx 9xx -xx @xx';
  $res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>

परिणामस्वरूप वेरिएबल में निम्नलिखित लिखा जाएगा:

php'! ! ! @xx'

व्यावहारिक कार्य

Задание 1

एक स्ट्रिंग दी गई है:

php<?php
  $str = 'xaz xBz xcz x-z x@z';
?>

निम्नलिखित पैटर्न के अनुसार सभी स्ट्रिंग्स ढूंढें: अक्षर 'x', बड़ा या छोटा अक्षर या हाइफन, अक्षर 'z'।

Задание 2

एक स्ट्रिंग दी गई है:

php<?php
  $str = 'xaz x$z x-z xcz x+z x%z x*z';
?>

निम्नलिखित पैटर्न के अनुसार सभी स्ट्रिंग्स ढूंढें: अक्षर 'x', फिर या तो डॉलर, या हाइफन या प्लस, फिर अक्षर 'z'।