2013-01-22 12 views
9

मुझे उन पंक्तियों को खोजने की आवश्यकता है जिनमें 10 से अधिक "," (मुझे CSV आयात करने में त्रुटियां मिली हैं, इसलिए मुझे इसे मैन्युअल रूप से सही करने की आवश्यकता है)। मैं नोटपैड ++ का उपयोग कर रहा हूं इसलिए मुझे लाइन से मिलान करने के लिए रिकेक्स लिखने की आवश्यकता नहीं है, केवल कोमा से मेल खाने के लिए।विशिष्ट वर्ण के एन या अधिक वर्ण वाले टेक्स्ट से नियमित अभिव्यक्ति

(.*,.*){11,100} //does not work 
+0

क्या आप "काम नहीं करते" से आपका क्या मतलब स्पष्ट कर सकते हैं? आपका रेगेक्स 10 से अधिक कॉमा के साथ लाइनों को ढूंढना चाहिए, भले ही यह अपने व्यवसाय के बारे में बहुत ही जटिल तरीके से जा रहा हो। –

उत्तर

12

.* कॉमा से भी मेल खाता है। आप ([^,] मैचों किसी भी चरित्र को छोड़कर के लिए अल्पविराम) एक नकार चरित्र वर्ग के साथ उन लोगों को बाहर करने की जरूरत है:

^[^,\r\n]*(?:,[^,\r\n]*){11,}$ 

मैं चरित्र वर्ग के लिए \r\n जोड़ दिया है या यह नई पंक्तियां भर से मेल खाएगी।

जागरूक रहें, हालांकि, यह उद्धृत तारों के भीतर मौजूद अल्पविरामों की भी गणना करेगा, इसलिए यदि आपके पास हैं, तो आप अपनी सीएसवी पंक्ति में फ़ील्ड की संख्या को गलत तरीके से गलत तरीके से गलत कर देंगे।

2

नोटपैड ++ संस्करण 6+ मानते हैं (जो पीसीआरई पर्ल-संगत नियमित अभिव्यक्ति पुस्तकालय का उपयोग करता है) और ' न्यू लाइन 'बॉक्स ढूँढें विंडो में टिक नहीं है मेल खाता है:

(.*?,){11,}

एक लाइन 10 से अधिक के लिए अल्पविराम हो, तो यह पिछले अल्पविराम के लिए लाइन की शुरुआत से मेल खाएगी। जब तक अगले वर्ण एक अल्पविराम है

(.*?,) किसी भी चरित्र के अलावा एक नई पंक्ति से संभव के रूप में कई बार मेल खाता है; {11,} का अर्थ 11 या अधिक बार है।

आप regex कि क्या 'की परवाह किए बिना काम करने के लिए चाहते हैं। न्यू लाइन से मेल खाता है 'बॉक्स टिक है, तो आप इस्तेमाल कर सकते हैं:

([^\n]*?,){11,} 

आपका रेगुलर एक्सप्रेशन से अगर काम करता है' न्यू लाइन 'बॉक्स टिक नहीं है से मेल खाता है, लेकिन के रूप में यह किसी भी चरित्र लालच से से मेल खाता है, वहाँ की क्षमता के इस तरह के एक विशाल संख्या में हो सकता है से मेल खाता है यह आवेदन लटका दिखाई दे सकते हैं। .* के बाद ? जोड़ना ताकि वाइल्डकार्ड आलसी या अनिच्छा से, यानी जितनी बार संभव हो सके, समस्या को हल करना चाहिए।

PCRE man pages
Perl Regular Expressions documentation - अनुशंसित।
Notepad++ "outdated" regular expressions tutorial

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