इस प्रोजेक्ट के बारे में
RE2 एक कुशल और सिद्धांत-आधारित रेगुलर एक्सप्रेशन लाइब्रेरी है, जिसकी मूल रूप से 2006 में Google में विकास किया गया था। इसका प्राथमिक डिज़ाइन लक्ष्य सुरक्षा है, यह सुनिश्चित करते हुए कि यह विश्वसनीय उपयोगकर्ताओं से रेगुलर एक्सप्रेशन को बिना भयंकर बैकट्रैकिंग या सेवा-से-इनकार (Denial-of-Service) हमलों के जोखिम के संभाल सके। PCRE, Perl या Python के re मॉड्यूल जैसे पारंपरिक इंजनों के विपरीत, RE2 गारंटी देता है कि मिलान का समय इनपुट स्ट्रिंग की लंबाई में रैखिक होता है।
मुख्य विशेषताएं:
- **सुरक्षा**: RE2 पुनरावृत्ति (recursion) से बचता है और एक कॉन्फ़िगर करने योग्य बजट के माध्यम से मेमोरी उपयोग को सीमित करता है, यदि समाप्त हो जाए तो सुचारू रूप से विफल हो जाता है। यह बैकट्रैकिंग इंजनों में आम स्टैक ओवरफ्लो और घातीय रनटाइम समस्याओं को रोकता है।
- **प्रदर्शन**: सरल पैटर्न पर अन्य इंजनों की तुलना में हमेशा तेज़ नहीं होने के बावजूद, समानांतर मूल्यांकन ओवरहेड के कारण, यह जटिल अभिव्यक्तियों पर स्थिर प्रदर्शन प्रदान करता है क्योंकि यह विकल्पों को क्रमिक रूप से नहीं बल्कि समानांतर में मूल्यांकन करता है।
- **सिंटैक्स समर्थन**: डिफ़ॉल्ट Perl मोड में, यह अधिकांश Perl ऑपरेटर स्वीकार करता है लेकिन उनको अस्वीकार करता है जिन्हें बैकट्रैकिंग की आवश्यकता होती है (जैसे बैकरेफ़रेंस, लुक-अराउंड एसेर्शन)। POSIX मोड में, यह मानक POSIX (egrep) सिंटैक्स को बाएं-से-सबसे-लंबे मिलान के साथ समर्थित करता है।
- **यूनिकोड हैंडलिंग**: RE2 सीधे यूनिकोड कोड पॉइंट्स पर काम करता है और सामान्यीकरण (normalization) नहीं करता है। यदि आवश्यक हो तो उपयोगकर्ताओं को इनपुट और पैटर्न को पहले सामान्यीकृत करना चाहिए।
लाइब्रेरी C++ में लागू की गई है और इसके लिए C++17 कंपाइलर और Abseil लाइब्रेरी की आवश्यकता होती है। इसे GNU make, CMake, या Bazel का उपयोग करके बनाया जा सकता है। हालांकि यह C++ के लिए मूल है, Python (`google-re2`) के लिए आधिकारिक वायरर्स मौजूद हैं, और Node.js, Java (RE2J), JavaScript (RE2JS), D, Erlang, OCaml, Perl, R, Ruby और WebAssembly के लिए सामुदायिक पोर्ट उपलब्ध हैं। Go और Rust जैसे अन्य भाषाएं RE2 के सिद्धांतों का पालन करते हुए समान लाइब्रेरी प्रदान करती हैं, लेकिन वे इसके साथ कोड साझा नहीं करती हैं।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.