2009-04-20 9 views
5

/(foo|foobar|foobaz)/ जैसे एक विकल्प को देखते हुए पर्ल 6 इस बारे में कोई वादा करता है कि इनमें से किस तीन का उपयोग किया जाएगा, और यदि दस्तावेज में यह कहां करता है तो यह वादा करता है?क्या पर्ल 6 ऑर्डर विकल्पों के बारे में कोई वादा करता है?

संबंधित प्रश्न Does Perl currently (5.8 and 5.10) make any promises about the order alternations will be used? देखें।

+3

यह मुझे मारता है कि पर्ल 6 बहुत सारे वादे करता है। जब तक लैरी हमें वास्तविक रिलीज की तारीख नहीं देता है, तब तक मैं उनमें से किसी पर विश्वास नहीं करूंगा :-) – bedwyr

+0

हे, ठीक है, नियम अधिकतर किए जाते हैं और मुझे इस बिंदु पर उनके लिए कोई भी परिवर्तन की उम्मीद नहीं है। उस ने कहा, यदि यह बदलता है तो यहां जवाब भी बदल सकता है। –

उत्तर

10

S05 कहते

कि अंत करने के लिए

, पर्ल 6 में हर regex उसके कार्यों से "शुद्ध" पैटर्न भेद, और (प्रारंभिक टोकन पैटर्न की अपनी सूची लौट संक्रामक टोकन सहित करने में सक्षम होना आवश्यक है उस रेगेक्स के "शुद्ध" भाग द्वारा बुलाए गए किसी भी उपद्रव के पैटर्न, लेकिन एक से अधिक उपरोक्त शामिल नहीं हैं, क्योंकि इसमें स्वयं संदर्भ शामिल होगा, जिसे पारंपरिक नियमित अभिव्यक्तियों में अनुमति नहीं है)। का उपयोग कर एक तार्किक विकल्प | फिर इन सूचियों में से दो या अधिक लेता है और विकल्प को प्रेषित करता है जो सबसे लंबे टोकन उपसर्ग से मेल खाता है। यह विकल्प हो सकता है या नहीं हो सकता है जो पहले शब्दावली में आता है।

हालांकि, यदि दो विकल्प एक ही लंबाई में मेल खाते हैं, तो टाई विशिष्टता से पहले टूट जाती है। विकल्प जो सबसे लंबे समय तक तय स्ट्रिंग के साथ शुरू होता है; यही है, एक सटीक मिलान चरित्र वर्गों का उपयोग करके किए गए एक मैच के करीब के रूप में गिना जाता है। यदि यह काम नहीं करता है, तो टाई दो तरीकों में से एक से टूट जाती है। यदि विकल्प विभिन्न व्याकरण में हैं, मानक एमआरओ (विधि संकल्प आदेश) निर्धारित करता है कि कौन से पहले प्रयास करें। यदि विकल्प एक ही व्याकरण फ़ाइल में हैं, तो पाठ के पहले के विकल्प को प्राथमिकता दी जाती है। (एक व्याकरण के नियमों से अधिक फ़ाइल में परिभाषित कर रहे हैं, तो आदेश अपरिभाषित है, और एक स्पष्ट जोर विफलता के लिए मजबूर करने यदि गलत एक पहले की कोशिश की है इस्तेमाल किया जाना चाहिए।)

यह एक बहुत ही अलग हो रहा है पर्ल 5 में किए गए एक से वादा 5.

13

इसे केवल कुछ शब्दों को रखने के लिए: विकल्पों को समानांतर में मिलान किया जाना चाहिए (कम से कम धारणात्मक), और सबसे लंबा मैच जीतता है। यदि आप अनुक्रमिक विकल्प चाहते हैं, तो आप डबल बार का उपयोग कर सकते हैं ||, जो बाएं से दाएं ऑर्डर का वादा करता है पर्ल 5 regexes में करता है।

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