नियमित अभिव्यक्ति इंजन प्रकार क्या बैश उपयोग करता है?


12

मैं अपने रेग्युलर एक्सप्रेशंस को प्रोटोटाइप करने और डिबग करने के लिए RegEx Buddy का उपयोग करता हूं। RegEx Buddy मुझे विभिन्न नियमित अभिव्यक्ति इंजन प्रकारों (.NET, Java, पर्ल, GNU BRE, GNU ERE, POSIX, BRE, POSIX ERE आदि) के बीच चयन करने की अनुमति देता है।

नियमित अभिव्यक्ति इंजन बैश का क्या उपयोग करता है (उदाहरण के लिए ifऔर caseकथनों में)? मैं Centos 5.5 32 बिट और 3.2.25 bash चला रहा हूं (1):

[kevin@mon01 scratch]$ bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

मैं अनुमान लगा रहा हूँ कि यह GNU BRE या GNU ERE होगा?

जवाबों:


11

बैश (और सामान्य रूप से POSIX गोले) caseबयान में नियमित अभिव्यक्तियों का उपयोग नहीं करते हैं , बल्कि ग्लोब पैटर्न

=~ऑपरेटर का उपयोग करते हुए नियमित अभिव्यक्ति के लिए सीमित समर्थन है ; विवरण देखें: http://mywiki.wooledge.org/BashGuide/Patterns ,
जो कहता है कि bashविस्तारित नियमित एक्सप्रेशंस (ERE) का उपयोग करता है।


धन्यवाद। दूसरे लिंक में ERE का उल्लेख है जो मैं अनुमान लगा रहा हूं कि GNU ERE है।
केव

3

बैश उपरोक्त प्रकार के नियमित अभिव्यक्तियों ifऔर caseकथनों में से किसी का भी उपयोग नहीं करता है ।

बल्कि, यह शेल ग्लोब पैटर्न का उपयोग करता है, जो किसी भी प्रकार के नियमित एक्सप्रेशन से कम शक्तिशाली हैं। बैश के अपेक्षाकृत नए संस्करण भी विस्तारित ग्लोब पैटर्न का उपयोग करने की अनुमति देते हैं जो स्पष्ट रूप से बिना (लाइन) एंकर के नियमित अभिव्यक्तियों के बराबर हैं, लेकिन नकारात्मक शब्दों सहित, लेकिन उपर्युक्त नियमित अभिव्यक्ति प्रकारों में से किसी भी वाक्यविन्यास से अलग हैं।

नोट करें कि विस्तारित शेल ग्लब्स को shopt -s extglob शेल स्क्रिप्ट या अंतःक्रियात्मक रूप से दोनों के साथ पूर्व उपयोग में सक्षम होना चाहिए ।

एक एकल असाधारण जगह में, [[ ]]सशर्त कमान के भीतर , =~द्विआधारी संबंध दाईं ओर एक विस्तारित नियमित अभिव्यक्ति ईआरई के खिलाफ बाईं ओर एक स्ट्रिंग की जांच करने की अनुमति देता है।


0

लिंक किए गए बैश गाइड के अनुसार, बैश (संस्करण 3.0+ के बाद से) का उपयोग करता है: " विस्तारित नियमित अभिव्यक्ति (ईआरई) बोली।"

उस बोली की अधिक जानकारी यहाँ मिल सकती है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.