2009-07-13 4 views
11

मैं PCRE दस्तावेज़ पढ़ रहा हूँ, और यह अधिकार परिमाणकों को संदर्भित करता है, लेकिन स्पष्ट रूप से या विशेष रूप से उन्हें नहीं परिभाषित करता है। मुझे पता है कि लालची क्वांटिफायर क्या है, और मुझे पता है कि आलसी क्वांटिफ़र क्या है। लेकिन स्वामित्व?क्या कोई मेरे लिए संभावित क्वांटिफायर समझा सकता है? (रेगुलर एक्सप्रेशन)

PCRE man page जब यह परिभाषित करने के बिना इस शब्द का इस्तेमाल धोखा दे रहा है। मैन पेज विशेष रूप से बताता है कि शब्दपरक क्वांटिफ़ायर को पहली बार Friedl's book में परिभाषित किया गया था। खैर, यह बहुत अच्छा है, लेकिन मेरे पास फ्रेडल की पुस्तक नहीं है, और लाइन पेज के बीच, मैन पेज को पढ़ने में, मैं यह नहीं समझ सकता कि लालची लोगों के स्वामित्व वाले क्वांटिफायर क्या हैं।

  • ? = शून्य या एक, लालची
  • ?? = शून्य या एक आलसी
  • ? + = शून्य या एक, अधिकार
  • '+' = एक या अधिक, लालची
  • +? = एक या अधिक, आलसी
  • ++ = एक या अधिक, अधिकार
+0

यह सवाल [स्टैक ओवरफ़्लो नियमित अभिव्यक्ति पूछे जाने वाले प्रश्न] में जोड़ दिया गया (http://stackoverflow.com/a/22944075/2736496), के तहत "Quantifiers> अधिक मतभेदों पर ..." – aliteralmind

उत्तर

11

शायद सबसे अच्छी जगह शुरू करने के लिए Regex Tutorial - Possessive Quantifiers है:

जब पुनरावृत्ति पर चर्चा ऑपरेटर या परिमाणकों, मैं समझाया लालची और आलसी पुनरावृत्ति के बीच का अंतर। लालची और आलस्य उस क्रम को निर्धारित करें जिसमें रेगेक्स इंजन रेगेक्स पैटर्न के संभावित क्रमपरिवर्तन को हल करता है। एक लालची क्वांटिफायर पहले जितनी बार संभव हो सके टोकन को दोहराने का प्रयास करेगा, और धीरे-धीरे इंजन बैकट्रैक के रूप में मिलान को कुल मिलान खोजने के लिए छोड़ देगा। एक आलसी क्वांटिफायर पहले टोकन को के रूप में कुछ बार दोहराएगा, और मैच को धीरे-धीरे के माध्यम से इंजन बैकट्रैक के रूप में विस्तृत मिलान खोजने के लिए रेगेक्स का विस्तार करेगा।


स्वत्वबोधक परिमाणकों से regex इंजन सभी क्रमपरिवर्तन की कोशिश कर रहा रोकने के लिए एक तरीका है। यह मुख्य रूप से प्रदर्शन कारणों के लिए उपयोगी है। आप कुछ मैचों को खत्म करने के लिए स्वामित्व वाले क्वांटिफायर का भी उपयोग कर सकते हैं।

+8

आह, समझा! उस ट्यूटोरियल को पढ़ने के बाद, मुझे लगता है कि आलसी लालची के विपरीत नहीं है। आलसी को "उदार" कहा जाना चाहिए, और स्वामित्व वाले रूप को वास्तव में आलसी कहा जाना चाहिए, क्योंकि स्वामित्व वाले क्वांटिफायर बैकट्रैक से इनकार करते हैं। वे कोई अतिरिक्त काम नहीं करेंगे, जो सिर्फ आलसी आलसी है। – Cheeso

+4

स्वामित्व वाले क्वांटिफ़ायर बैकट्रैक से इनकार करते हैं - यह सबसे अच्छा स्पष्टीकरण है जिसे मैंने इसके बारे में पढ़ा है। संक्षेप में धन्यवाद के लिए धन्यवाद :) – vondip

संबंधित मुद्दे