कई प्रोग्रामर एक त्वरित नियमित अभिव्यक्ति को व्हिप करने की खुशी को जानते हैं, इन दिनों अक्सर कुछ वेब सेवा की मदद से, या पारंपरिक रूप से इंटरैक्टिव प्रॉम्प्ट पर, या शायद एक छोटी स्क्रिप्ट लिख रहे हैं जिसमें विकास के तहत नियमित अभिव्यक्ति है, और परीक्षण मामलों का एक संग्रह है । या तो मामले में प्रक्रिया पुनरावृत्त है और काफी तेज है: जब तक यह मेल नहीं खाता तब तक क्रिप्टो-दिखने वाले स्ट्रिंग पर हैकिंग रखें और जो आप चाहते हैं उसे कैप्चर करें और जो आप नहीं चाहते हैं उसे अस्वीकार कर दें।
एक साधारण मामले के लिए परिणाम कुछ इस तरह हो सकता है, जैसे कि जावा रेगेक्स:
Pattern re = Pattern.compile(
"^\\s*(?:(?:([\\d]+)\\s*:\\s*)?(?:([\\d]+)\\s*:\\s*))?([\\d]+)(?:\\s*[.,]\\s*([0-9]+))?\\s*$"
);
कई प्रोग्रामर्स को यह भी पता होता है कि एक रेग्युलर एक्सप्रेशन को एडिट करने की जरूरत का दर्द, या सिर्फ लीगेसी कोड बेस में रेगुलर एक्सप्रेशन के आसपास कोड। एक बिट संपादन के साथ इसे विभाजित करने के लिए, regexp के ऊपर अभी भी बहुत आसानी से किसी को भी regexps से परिचित होने के लिए समझने के लिए आसान है, और एक regexp वयोवृद्ध को तुरंत देखना चाहिए कि वह क्या करता है (पोस्ट के अंत में उत्तर दें, यदि कोई व्यक्ति व्यायाम चाहता है यह पता लगाना)।
हालांकि, चीजों को और अधिक जटिल पाने के लिए एक regexp सही मायने में बनने के लिए बात है, और यहां तक कि मेहनती प्रलेखन (जो सबके साथ ही लिखना-की जरूरत नहीं है निश्चित रूप से सभी जटिल regexps वे लिखते हैं ... के लिए करता है), regexps को संशोधित करने के लिए एक हो जाता है चुनौतीपूर्ण कार्य। यह एक बहुत ही खतरनाक काम भी हो सकता है, अगर regexp को सावधानीपूर्वक जांच की गई इकाई नहीं है (लेकिन निश्चित रूप से सभी के पास अपने सभी जटिल regexps के लिए व्यापक इकाई परीक्षण हैं, दोनों सकारात्मक और नकारात्मक ...)।
तो, लंबी कहानी छोटी है, क्या उनकी शक्ति को खोए बिना नियमित अभिव्यक्ति के लिए एक लिखित-पढ़ा समाधान / विकल्प है? एक वैकल्पिक दृष्टिकोण के साथ उपरोक्त regexp कैसा दिखेगा? कोई भी भाषा ठीक है, हालांकि एक बहु-भाषा समाधान सबसे अच्छा होगा, डिग्री regexps बहु-भाषा है।
और फिर, पहले वाला रेग्जैक्स यह क्या करता है: प्रारूप में संख्याओं की एक स्ट्रिंग को पार्स करें 1:2:3.4
, प्रत्येक संख्या को कैप्चर करना, जहां रिक्त स्थान की अनुमति है और केवल 3
आवश्यक है।