2015-11-20 7 views
5

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

[BLT]+ 

हालांकि, यह स्क्वायर ब्रैकेट में सभी अक्षरों से मेल नहीं खाता है, लेकिन स्क्वायर ब्रैकेट में किसी भी पत्र से मेल खाता है। फिर मैंने शब्द नियमित समेत निम्नलिखित नियमित अभिव्यक्ति की भी कोशिश की है;

\b[BLT]+ 

और यह अभिव्यक्ति, फिर से, किसी भी सहित सभी शब्दों के आवृत्तियां से मेल खाता है, लेकिन नहीं वर्ग कोष्ठक के बीच में सूचीबद्ध पत्र के सभी

वांछित व्यवहार

Let कहते हैं, शब्दकोश के रूप में नीचे एक सूची है; (! नहीं किसी भी)

AL 
BAL 
BAK 
LABAT 
TAL 
LAT 
BALAT 
LA 
AB 
LATAB 
TAB 

क्या मैं जरूरत है एक अभिव्यक्ति है कि पत्र 'बी', 'एल', 'टी' के सभी, इस प्रकार अपेक्षित व्यवहार नीचे के रूप में होना चाहिए होता है;

LABAT 
BALAT 
LATAB 

इस समस्या के लिए सबसे minimalist और सामान्यनियमित अभिव्यक्ति क्या है?

+4

और जहां क्या तुम परेशान हो? कृपया अपना रेगेक्स साझा करें। –

+0

आपको एक नज़र रखना चाहिए [http://emacs.stackexchange.com/a/7716) –

+0

यदि आप [नियम] (http://stackoverflow.com/help/on) का अनुपालन करने के लिए अपना प्रश्न दोहरा सकते हैं -topic), आप दोनों एक पक्ष करेंगे। अन्यथा यह पृष्ठ 2015-11-25 को गायब हो जाएगा। –

उत्तर

5

आप lookaheads उपयोग कर सकते हैं: एक उदाहरण के रूप में एक अधिक सामान्य मामले के लिए

^(?=.*B)(?=.*L)(?=.*T).+$ 

, कम से कम 1 B, 2 L और 3 T रों लिए अनुकूलित regex:

^(?=[^B\n]*B)(?=(?:[^L\n]*L){2})(?=(?:[^T\n]*T){3}).+$ 
+0

लुकहेड का जिक्र करने के लिए धन्यवाद। –

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