मैं अधिक सैद्धांतिक तरीके से संकलन-समय नियमित अभिव्यक्तियों (सीटीआर) बनाम रन-टाइम (गतिशील) नियमित अभिव्यक्तियों (आरटीआर) के विषय में गहराई से अन्य लोगों के उत्तरों को पूरक करने का प्रयास करूंगा (यह विषय ओपी द्वारा निहित है अप्रत्यक्ष रूप से प्रश्न IMHO)। रन-टाइम रेगेक्स अधिक ज्ञात और लोकप्रिय (अधिकांश भाषा कोर-लाइब्रेरी कार्यान्वयन) हैं, मुझे लगता है कि ऐतिहासिक कारणों से। वे ठीक हैं जब नियमित अभिव्यक्ति को सीटीआर के विपरीत रन-टाइम पर निर्धारित किया जाता है। परिमित राज्य मशीन के आधार पर दोनों काम करते हैं।
आरटीआर "संकलित" और किसी प्रकार की सार्वभौमिक परिमित राज्य मशीन द्वारा व्याख्या की जाती है (सार्वभौमिक अर्थ यह है कि इस प्रकार का दुभाषिया जो योजना रन-टाइम पर दिया जाता है, कुछ आंतरिक डेटा संरचना में "संकलित" होता है - जब आप रेगेक्स स्ट्रिंग पास करते हैं, फिर रन-टाइम पर व्याख्या की गई)।
लेकिन सीटीआर संकलन समय पर विशेष regex के लिए विशिष्ट "संकलित" जाता है और कर रहे हैं, तो आप उन्हें उपयोग नहीं कर सकते जब regex रन-टाइम में (पाठ संपादक, फ़ाइल/इंटरनेट खोज इंजन जैसे अनुप्रयोगों दिया जाता है)।
लेकिन वे पहले से अधिक कुशल (सैद्धांतिक रूप से) हैं क्योंकि संकलन-समय परिमित राज्य मशीन में अनुकूलित किया गया है, इस मशीन की टेबल-प्रीसेट योजना के साथ दुभाषिया की तुलना में कुशल होगा (कुछ समान मामले प्रतिबिंब क्षेत्र पहुंच बनाम संकलन-समय हैं एक्सेस, या विशिष्ट फ़ंक्शन पैरामीटर के लिए ऑप्टिमाइज़ किया गया है जैसा कि there इंगित किया गया है)। एक और फायदा संकलन-समय वाक्यविन्यास जांच है। मेटा प्रोग्रामिंग और/या कोड पीढ़ी के माध्यम से सीटीआर लागू किया जा सकता है।
विशिष्ट कार्यान्वयन के लिए - कई आरटीआर हैं, लेकिन इतने सारे सीटीआर नहीं हैं। सी ++ के लिए वे ऊपर उल्लिखित बूस्ट और एसटीएल सी ++ 0x11 कार्यान्वयन हैं। आपको रेगेक्स परफॉर्मेंस/जेनरेट कोड/मेमोरी उपयोग के आकार को अनुकूलित करने के लिए उनकी आवश्यकता हो सकती है, जो ज्यादातर एम्बेडेड सिस्टम या उच्च परफॉर्मेंस विशिष्ट अनुप्रयोगों के लिए प्रासंगिक होती हैं। SO question about CTR सीटीआर-कार्यान्वयन ढूँढना कठिन है, एक उदाहरण यदि रीक 2 कोड जनरेटर प्रोजेक्ट, Java CTR implementation और सी # कार्यान्वयन है जिसमें रेगेक्स के रन-टाइम संकलन (आईएल कोड में, आंतरिक डेटा संरचना नहीं है) [इसमें इसके बारे में बहुत सवाल है]
पीएस क्षमा करें, प्रतिष्ठा के कारण कुछ प्रासंगिक लिंक पोस्ट नहीं कर पाएंगे
यह पूरी तरह से सच नहीं है। Xpressive रनटाइम regexes का भी समर्थन करता है, यहां देखें: http://www.boost.org/doc/libs/1_46_1/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.creating_a_regex_object.dynamic_regexes – Pablo
@ पाब्लो धन्यवाद! मैंने कभी नहीं महसूस किया कि यह ऐसा किया। क्या आप जानते हैं कि इसका बैकएंड क्या उपयोग करता है? क्या यह एक precompiled lib की आवश्यकता है? – KitsuneYMG
इसका एक शीर्षलेख केवल lib है। इंस्टॉलेशन नोट्स देखें: http://www.boost.org/doc/libs/1_46_1/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.installing_xpressive मुझे संकलन के समय में समस्या नहीं है। कारण मैं बूस्ट में बदल गया। रेगेक्स आईसीयू समर्थन था। – Pablo