2008-10-31 23 views
11

क्या आपने अभी तक अपने regexes में पर्ल 5.10 बैकट्रैकिंग नियंत्रण क्रिया का उपयोग किया है? और उन्होंने आपको क्या करने में मदद की?क्या आपने अभी तक अपने regexes में पर्ल 5.10 बैकट्रैकिंग नियंत्रण क्रियाओं का उपयोग किया है?


पृष्ठभूमि के समान: मैंने कुछ झुकाव किया है, लेकिन मुझे कोई भी उपयोगी परिणाम नहीं मिल रहा है।

तुलनात्मक रूप से, जब मैंने (?> समूहिंग को प्राप्त करना शुरू किया, तो यह मेरे regexes में और अधिक दिखाना शुरू कर दिया। मुझे पर्ल रेगेक्स की दुनिया को धारणाओं के एक विशेष सेट में ट्यून करने का विचार पसंद आया। चूंकि आरई भाषाएं अधिक फीचर्ड हो जाती हैं, बैकट्रैकिंग ने आरईएस के प्रदर्शन को दुबला और मतलब एफएसए से अलग कर दिया है, जिस पर वे आधारित थे।


जब कोई मुझे बता सकते हैं क्या आर ई के अन्य कार्यान्वयन नियंत्रण क्रियाओं उलटे पांव लौटने से है - और PCRE नहीं, मैं स्वीकार कर सकते हैं कि यह regexes के बारे में जानकार लोगों की विशेषज्ञता के सामान्य क्षेत्रों में अंतर्गत आता है करता है। यह पर्ल रेगेक्स प्रश्न है, और लोग रुबी, पायथन, सी #, जावास्क्रिप्ट - या किसी भी पीसीआरई क्लाइंट कार्यान्वयन के साथ लोगों की मदद करने में मदद करते हैं - शायद वे सामान्य रूप से पढ़ने वाले टैग के लिए स्थान की बर्बादी के रूप में आपकी सहायता या देख नहीं सकते ।

+0

क्या हमें [perl-regex] के लिए टैग बनाने की आवश्यकता थी? –

+1

रेगेक्स टैग के तहत बहुत से कार्यान्वयन-विशिष्ट पोस्ट हैं। कुछ लोग कहते हैं "केवल जावा" या "इन सी #, ...." तो मुझे वहां परेशान करने में, जहां तक ​​मुझे पता है कि केवल पर्ल में ये क्रियाएं हैं, इसलिए यह पर्ल के लिए विशिष्ट है। – Axeman

+0

मुझे नहीं पता कि "प्रश्नों के उत्तर लगभग पूरी तरह से विचारों के आधार पर कैसे होंगे" एक विश्वसनीय आलोचना भी है। एक प्रस्तुत अनुप्रयोग या तो रेगेक्स क्रियाओं का उपयोग करता है या यह अन्य प्रश्नों को प्रस्तुत "समाधान" के समान तरीके से काम करता है या नहीं करता है। और चाहे यह एक * महत्वपूर्ण * पर्याप्त समस्या हल करता है या नहीं, यह भी उसी प्रकार की व्यक्तिपरकता के अधीन है कि वोट सिस्टम स्वयं निर्णय लेने में समाहित होता है कि कोई समाधान "समाधान" कितना अच्छा है। – Axeman

उत्तर

2

हाँ, मेरे पास है, हालांकि बहुत अधिक नहीं है। मैं बैकट्रैकिंग को नियंत्रित करने के लिए उनका उपयोग करता हूं, आमतौर पर अधिक क्रमपरिवर्तन करने के लिए इसे मजबूर करने के लिए। यहां एक amusing solution है और यहां एक practical one है।

+1

लंबे समय तक, मैं सीख रहा हूं कि कुछ रेगेक्स क्रियाओं का उपयोग कैसे करें। आपके लिए धन्यवाद और धन्यवाद ('perlre') [http://perldoc.perl.org/perlre.html) में विस्तारित अनुभाग होने के लिए धन्यवाद (लेकिन शायद यह भी आप), मैं वास्तव में इस विकल्प के साथ आया दूसरे समाधान के लिए आरई: 'qr {x (* PRUNE) (ए? बी? सी?) (? (? {$ 1}) | (* असफल))} x'। – Axeman

1

ईमानदारी से, मैंने अभी तक 5.10 का उपयोग भी नहीं किया है। कुछ नई सुविधाओं के रूप में महान हैं, मैं केवल उन्हें व्यक्तिगत स्क्रिप्ट में उपयोग करता हूं। उत्पादन के लिए मैं 5.8 के साथ संगतता को लक्षित करता हूं। सीपीएएन के लिए मैं 5.6 लक्ष्य। इसने मुझे नए खिलौनों के साथ खेलने से रोक दिया है।

बैकट्रैकिंग नियंत्रण सुविधाएं दिलचस्प हैं लेकिन मैं पार्सर्स के बाहर कई एप्लिकेशन नहीं देख पा रहा हूं। मैं एक पूरे पार्सर को एक रेगेक्स में भरने की कल्पना नहीं कर सकता। (भले ही वे समर्थन पुनरावृत्ति करते हैं!) मैं पर्ल 6 व्याकरण के बारे में बहुत उत्साहित हूं।

+0

मैं व्याकरण पर सहमत हूं। लेकिन क्रियाएं अब हमें थोड़ा सा देती हैं। – Axeman

+1

वे करते हैं, लेकिन यह तुरंत किसी भी चीज की तुलना में एक टीज़र की तरह लगता है। उस छोटे से "चेतावनी भी है: ये पैटर्न प्रायोगिक हैं और परिवर्तन या हटाने के अधीन हैं ..." प्रतिलिपि में चेतावनी। –

+0

5.10.0 न्यूनतम संस्करण है जिसे मैं इन दिनों प्रोग्राम करता हूं। इससे पहले उचित चीजों को करना मुश्किल है। मुझे बेहतर रेगेक्स समर्थन और बेहतर यूनिकोड समर्थन के लिए इसकी आवश्यकता है। – tchrist

2

पिछले कुछ वर्षों से मैंने कोई पर्ल प्रोग्रामिंग किया है, इसलिए जब तक आपने इसका उल्लेख नहीं किया तब तक मुझे इस सुविधा के बारे में भी पता नहीं था। यह उन कट्टर विशेषताओं में से एक जैसा दिखता है जो केवल रेगेक्स गुरु का उपयोग करेंगे (बेशक, पर्ल समुदाय में उनमें से बहुत सारे हैं)। दूसरी तरफ पर्ल 6 ग्रामर, ऐसा लगता है कि वे खेलने के लिए बहुत मजेदार होंगे।

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

पेज, जहां तक ​​मुझे पता है, स्वामित्व वाले क्वांटिफ़ायर केवल जावा, पीसीआरई (PHP, अपाचे, फ्लेक्स 3/एक्शनस्क्रिप्ट 3) द्वारा समर्थित हैं, और जेजीएसओफ्ट रेगेक्स इंजन रेगेक्सबड्डी, एडिटपैड प्रो और पावरग्रेप द्वारा उपयोग किया जाता है।

अपडेट: ओनिगुरुमा स्वाद (रूबी 1.9+ और टेक्स्टमैट में उपयोग किया जाता है) परमाणु समूहों और स्वामित्व वाले क्वांटिफायर दोनों का समर्थन करता है। और निश्चित रूप से, पर्ल 5.10 बैकट्रैकिंग-नियंत्रण क्रियाओं के अतिरिक्त उन्हें समर्थन देता है।

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