2010-02-19 14 views
11

मुझे आश्चर्य है कि क्यों इतनी नियमित अभिव्यक्ति बोलियां होनी चाहिए। यह इतनी सारी भाषाओं की तरह क्यों प्रतीत होता है, फिर एक कोशिश की और सही बोली का पुन: उपयोग करना, खुद को लिखने पर झुका हुआ लगता है।इतनी अलग नियमित अभिव्यक्ति बोलियां क्यों हैं?

Like these.

मेरा मतलब है, मैं समझता हूँ कि इनमें से कुछ बहुत अलग बैकेंड की क्या ज़रूरत है। लेकिन क्या प्रोग्रामर से इसे सारणित नहीं किया जाना चाहिए?

मैं अजीब लेकिन छोटे अंतरों का अधिक जिक्र कर रहा हूं, जैसे कि एक भाषा में कोष्ठक से बचने के लिए, लेकिन दूसरे में अक्षर हैं। या जहां मेटा-वर्णों का अर्थ कुछ अलग-अलग चीजें हैं।

क्या कोई विशेष कारण है कि नियमित अभिव्यक्तियों के लिए हमारे पास सार्वभौमिक बोली नहीं हो सकती है? मुझे लगता है कि यह उन प्रोग्रामरों के लिए चीजों को अधिक आसान बना देगा जिन्हें कई भाषाओं में काम करना है।

+0

मुझे पता नहीं, शायद प्रत्येक बोली के डेवलपर्स सोचा उनकी सभी दूसरों की तुलना में बेहतर था, या हो सकता है कि यह समय है कि अन्य अभी तक suport नहीं किया था, और फिर जब दूसरों उन सुविधाओं उन्होंने सोचा लागू करने का फैसला पर एक विशिष्ट जरूरत के अनुकूल वे इसे बेहतर कर सकते हैं। ऐसा नहीं है कि केंद्रीय रेगेक्स गवर्निंग कमेटी है। – FrustratedWithFormsDesigner

+2

क्या पॉज़िक्स ऐसा नहीं होना चाहिए :-)? अगर है कि क्या आप के बाद कर रहे हैं – BigBeagle

+0

http://stackoverflow.com/a/11857890/874188 ऐतिहासिक पृष्ठभूमि का एक सा है। – tripleee

उत्तर

9

क्योंकि नियमित अभिव्यक्ति केवल तीन ऑपरेशन:

  • कड़ी
  • संघ |
  • क्लीन बंद *

बाकी सब कुछ एक विस्तार या वाक्यात्मक चीनी है, और इसलिए कोई स्रोत नहीं है मानकीकरण के लिए। कैप्चरिंग समूह, बैकरेरेंस, कैरेक्टर क्लासेस, कार्डिनिटी ऑपरेशंस इत्यादि जैसी चीजें नियमित अभिव्यक्तियों की मूल परिभाषा के सभी जोड़ हैं।

इनमें से कुछ एक्सटेंशन "नियमित अभिव्यक्ति" नियमित रूप से नियमित नहीं होते हैं। वे इन अतिरिक्तों के कारण गैर-नियमित भाषाओं का निर्णय लेने में सक्षम हैं, लेकिन हम अभी भी उन्हें नियमित रूप से अभिव्यक्ति कहते हैं।

जैसे-जैसे लोग अधिक एक्सटेंशन जोड़ते हैं, वे अक्सर नियमित अभिव्यक्तियों के अन्य, सामान्य विविधताओं का उपयोग करने का प्रयास करेंगे। यही कारण है कि लगभग हर बोलीभाषा X+ का उपयोग "एक या कई एक्सएस" के लिए करती है, जो स्वयं XX* लिखने के लिए एक शॉर्टकट है।

लेकिन जब नई सुविधाएं जुड़ती हैं, तो मानकीकरण के लिए कोई आधार नहीं है, इसलिए किसी को कुछ करना है। यदि डिजाइनरों के एक से अधिक समूह एक ही समय में समान विचारों के साथ आते हैं, तो उनके पास अलग-अलग बोलीभाषाएं होंगी।

3

इसी कारण से हमारे पास इतनी सारी भाषाएं हैं। कुछ लोग अपने उपकरण को बेहतर बनाने की कोशिश करेंगे और साथ ही अन्य लोग बदलने के लिए प्रतिरोधी होंगे। सी/सी ++/जावा/सी # कोई भी?

1

प्रोग्रामिंग के "मैंने इसे बेहतर बनाया" सिंड्रोम इन सभी चीजों का उत्पादन करता है। यह मानकों के साथ समान है। लोग दूसरों को बदलने के लिए अगला "सर्वश्रेष्ठ" मानक बनाने का प्रयास करते हैं और यह कुछ और बन जाता है जिसे हम सभी को सीखना/डिजाइन करना है।

1

मुझे लगता है कि इसका एक अच्छा हिस्सा मानक वाक्यविन्यास को स्थापित करने और बनाए रखने और अलग-अलग वातावरण में संगतता सुनिश्चित करने के लिए कौन जिम्मेदार होगा?

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

एक अच्छी रणनीति को समझने के लिए regex एल्गोरिदम खुद को समारोह के लिए एक अधिक अमूर्त स्तर पर है, तो किसी विशेष वाक्य रचना को लागू करने के लिए बहुत आसान हो जाता है समय लेने के लिए है। इसी तरह के प्रत्येक प्रोग्रामिंग भाषा में सशर्त बयान और लूप जैसी संरचनाओं के लिए इसका स्वयं का वाक्यविन्यास होता है, लेकिन फिर भी वही सार कार्य पूरा करता है।

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