मैं नीचे दिए गए स्ट्रिंग से मेल खाने के लिए निम्नलिखित रेगेक्स का उपयोग कर रहा हूं, अब तक बहुत अच्छा है। अब, मैं बीएजेड की सामग्री को वैकल्पिक कैसे बना सकता हूं, इसलिए यह उन मामलों से मेल खाता है जहां बीएजेड ()
$str = '- 10 TEST (FOO 3 TEST.BAR 213 BAZ (\HELLO) TEST';
preg_match('/FOO (\d+).+BAR (\d+).+BAZ \(\\\\(\w+)\)/i', $str, $match);
$str = '- 10 TEST (FOO 3 TEST.BAR 213 BAZ () TEST';
$array = array(
'FOO' => 3,
'BAR' => 213,
'BAZ' =>
);
2 जवाब
ऐसा लगता है कि आप पूरी चीज़ को एक गैर-कैप्चरिंग समूह में लपेटना चाहते हैं और एक ?
ऑपरेटर जोड़ना चाहते हैं।
/FOO (\d+).+BAR (\d+).+BAZ (?:\(\\\\(\w+)\))?/i
ध्यान दें कि यह बीएजेड को इसके बाद बिना किसी कोष्ठक के कैप्चर करता है। यदि आप इसके बजाय BAZ () ढूंढ रहे हैं, तो इसका उपयोग करें:
/FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i
कुछ वैकल्पिक बनाने के लिए आप इसे गैर-कैप्चरिंग समूह (?: ... )
में रख सकते हैं और फिर समूह के बाद एक प्रश्न चिह्न लगा सकते हैं। प्रश्न चिह्न एक क्वांटिफायर है जिसका अर्थ है "शून्य या एक"।
दूसरे शब्दों में, इसे बदलें:
\\\\(\w+)
इसके लिए:
(?:\\\\(\w+))?
तो पूरी अभिव्यक्ति बन जाती है:
/FOO (\d+).+BAR (\d+).+BAZ \((?:\\\\(\w+))?\)/i
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।