2014-05-14 8 views
5

में पॉज़िक्स क्लास के बाद पुनरावृत्ति मेटा वर्ण मैं नियमित अभिव्यक्ति सीख रहा हूं। मुझे उस उदाहरण से संबंधित कुछ संदेह हैं:`{n}` reixx

मैं नामों में पारंपरिक एक्सटेंशन के साथ सभी फाइलें ढूंढना चाहता हूं। यह काम करता है:

ls | grep '\.[[:lower:]][[:lower:]][[:lower:]]$' 

लेकिन यह नहीं करता है:

ls | grep '\.[[:lower:]]{3}$' 

जहां तक ​​मेरा पैटर्न चरित्र पूर्ववर्ती की बिल्कुल {n} घटनाओं है कि के साथ मिलान में {n} यात्रा मेटा चरित्र परिणाम समझा। क्या यह पॉज़िक्स कक्षाओं के साथ काम नहीं करता है? या मैं यहाँ कुछ मूर्खतापूर्ण गलती कर रहा हूँ?

उत्तर

5

POSIX basic (BRE) में, आप ब्रेसिज़ से बचने के लिए यह काम करने के लिए की जरूरत है:

ls | grep '\.[[:lower:]]\{3\}$' 

POSIX में बढ़ाया (ERE), इस आवश्यकता को गिरा दिया गया है, और ERE भी अंत में नियमित अभिव्यक्ति के प्रत्यावर्तन (|) कहते हैं (हालांकि कुछ उपकरण जो बीआरई का उपयोग करते हैं, \| के माध्यम से वैकल्पिकता का समर्थन करते हैं)।

+0

हमें डबल स्क्वायर ब्रैकेट की आवश्यकता क्यों है? – thefourtheye

+0

@thefourtheye क्योंकि पॉज़िक्स काम में चरित्र वर्गों का नाम कैसा है। –

+0

स्पष्टीकरण के लिए धन्यवाद। –

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