2009-12-01 11 views
11

से शुरू नहीं होने वाली रेखाएं हटाएं मैं इस समस्या को रेगेक्स धोखा शीट की मदद से लड़ रहा हूं, यह पता लगाने की कोशिश कर रहा हूं कि यह कैसे करें, लेकिन मैं हार मानता हूं ... मेरे पास यह लंबी फ़ाइल खुली है नोटपैड ++ और उन सभी पंक्तियों को हटाना चाहते हैं जो अंकों से शुरू नहीं होते हैं (0..9)। मैं एन ++ की खोज/प्रतिस्थापन कार्यक्षमता का उपयोग करूंगा। मैं केवल इसका उल्लेख कर रहा हूं क्योंकि मुझे यकीन नहीं है कि रेगेक्स कार्यान्वयन एन ++ का उपयोग कर रहा है ... धन्यवादरेगेक्स: अंक

उदाहरण। निम्न पाठ से:/

1hello 

2world 

3! 

एक खोज कर रही द्वारा एक रेगुलर एक्सप्रेशन पर बदल देते हैं:

1hello 
foo 
2world 
bar 
3! 

मैं

1hello 
2world 
3! 

नहीं निकालने के लिए चाहते हैं।

+1

मैंने इसका उपयोग किया है http://stackoverflow.com/a/10731750 एक आकर्षण की तरह काम किया –

उत्तर

21

आप ^[^0-9].* के साथ उन पंक्तियों को साफ़ कर सकते हैं लेकिन यह खाली रेखाएं छोड़ देगा।

नोटपैड ++ स्किंटिला का उपयोग करें, और उनसे मिलान करने के लिए अपने रेगेक्स इंजन का उपयोग भी करें।

\ r और \ n क्योंकि स्फुलिंग में मिलान कभी नहीं कर रहे हैं, नियमित अभिव्यक्ति खोज प्रति पंक्ति ( अंत लाइन वर्ण छीन) लाइन बना रहे हैं।

http://www.scintilla.org/SciTERegEx.html

उन रिक्त लाइनों को स्पष्ट करने के लिए, एक ही रास्ता है विस्तारित मोड चुनते हैं, और, \ n आप विंडोज में मोड परिवर्तन \ r \ n \ r \ n कर रहे हैं करने के लिए की जगह \ n \ n \ r \ n

+0

ओह, ठीक है, मुझे लगता है कि मैं इस स्पष्टीकरण से संतुष्ट हूं। –

+4

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

+0

पीटर Perháč द्वारा बुकमार्क उत्तर नोट करें। जब मैं इस पृष्ठ पर उतर गया तो मुझे वही चाहिए था। (मैं इस टिप्पणी को स्वीकृत उत्तर में जोड़ रहा हूं, क्योंकि यह सुविधा नोटपैड ++ में उपलब्ध नहीं हो सकती थी जब प्रश्न का उत्तर पहले दिया गया था।) – jcadcell

7

[^0-9] एक नियमित अभिव्यक्ति है जो अंकों को छोड़कर, काफी कुछ भी मेल खाती है। यदि आप ^[^0-9] कहते हैं तो आप सबसे नियमित अभिव्यक्ति प्रणालियों में, लाइन की शुरुआत में "एंकर" करते हैं। यदि आप शेष रेखा को शामिल करना चाहते हैं, तो ^[^0-9].+ का उपयोग करें।

+0

भी काम किया लेकिन पूरी तरह से खाली लाइनों को छोड़ दिया। मैं लाइन ब्रेक को कैप्चर कैसे कर सकता हूं? –

+0

क्या आपने अपनी अभिव्यक्ति के अंत में '[\ r \ n] *' जोड़ने का प्रयास किया है? –

+0

ऐसा लगता है कि यह केवल एनपी ++ में "विस्तारित मोड" में काम करता है, लेकिन रेगेक्स-मोड में नहीं। – moxn

6

^[^\d].* एक पूरी लाइन है जिसका पहला चरित्र अंक नहीं है। जांचें कि अंकों के सामने वास्तव में कोई सफेद जगह नहीं है या नहीं। अन्यथा आपको एक अलग अभिव्यक्ति का उपयोग करना होगा।

अद्यतन: आपको दो चरणों में करना होगा। सबसे पहले उन रेखाओं को खाली करें जो अंकों से शुरू नहीं होते हैं। फिर विस्तारित मोड में खाली लाइनों को हटा दें।

+0

यह काम करती है जहां तक ​​सभी लाइनों को अंक से शुरू नहीं किया जाता है, लेकिन जब मैंने खोज/प्रतिस्थापन किया, तो^[^ \ d]। * को खोजकर कुछ भी नहीं बदला, मैं अभी भी बहुत से खाली रेखाएं मैं आपके रेगेक्स को लाइन ब्रेक कैप्चर कैसे करूं? –

+0

आप अंकों के साथ सभी लाइनों को हटाने के लिए पहले कोशिश कर सकते हैं। और फिर आप "विस्तारित मोड" पर स्विच कर सकते हैं। मैंने इसका परीक्षण किया और यह मेरे लिए \ r \ n' के साथ लाइनब्रैक खोजने के लिए काम करता है। फिर उन्हें नहदी के साथ बदलें। – moxn

+0

हाँ, यह करने का एक समय-परीक्षण तरीका है, लेकिन मुझे उम्मीद थी कि यह सब एक ही चरण में किया जा सकता है। हो सकता है कि अगर मैं कुछ अन्य संपादक का उपयोग कर रहा था, लेकिन यह एनपीपी है, और इसलिए मैं इसे दो चरणों में करने में संतुष्ट रहूंगा :) चीयर्स –

1

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। लेकिन शुरुआत में अंकों के साथ लाइनों को खोजने के लिए reg exp ^ \ d। * आप उपरोक्त से मेल खाने वाली सभी पंक्तियों को हटा सकते हैं या वैकल्पिक रूप से इस अभिव्यक्ति से मेल खाने वाली सभी पंक्तियों को हटा सकते हैं: ^ [^ \ d ]। *

+0

मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे प्रश्न का कौन सा हिस्सा स्पष्ट नहीं है। मैं इसे संपादित कर दूंगा, लेकिन मुझे लगता है कि मैं एक अंक से शुरू नहीं होने वाली रेखाओं को हटाने के तरीके में पूछने में काफी स्पष्ट हूं? –

+0

मुझे यह स्पष्ट नहीं था कि आप कैसे निकालने की कोशिश कर रहे हैं। अब मैं समझता हूं कि आप खोज और प्रतिस्थापन का उपयोग कर रहे हैं। ^ [^ \ d]। * के साथ खोजने की कोशिश करें और \ b (जो बैकस्पेस कैरेक्टर या वैकल्पिकैटली * है और यह मेरे लिए अतीत में काम करता है) ^ [^ \ d]। * \ R और कुछ भी नहीं बदलें (आर पूंजी होना चाहिए!)

यदि बाद वाला "लालची" है, तो यह पहले मैच के बाद सभी लाइनों को हटा देता है, तो आप^[^ \ d] [^ \ R] * \ R कुछ भी नहीं – codekitty

3

कोई भी नोटपैड ++ में बुकमार्किंग की तकनीक का उपयोग कर सकता है। मैंने इस सुविधा से लाभान्वित होना शुरू किया (लंबे समय से मौजूद है लेकिन हाल ही में यूआई में कुछ और अधिक दिखाई देता है) बहुत पहले नहीं।

बस खोज संवाद लाएं, अंक ^\D.*$ से शुरू नहीं होने वाली लाइनों के लिए रेगेक्स टाइप करें और सभी को चिह्नित करें चुनें। यह बाएं गटर में, नींबू की तरह नीले मंडल रखेगा - ये लाइन बुकमार्क्स हैं। फिर बस मुख्य मेनू से चुनें -> बुकमार्क -> बुकमार्क लाइनों को हटाएं।

बुकमार्क शांत हैं, आप बुकमार्क लाइनों की प्रतिलिपि बनाने, नए दस्तावेज़ खोलने और लाइनों को चिपकाने के लिए बस इन लाइनों को निकाल सकते हैं। लॉग फ़ाइलों की समीक्षा करते समय मैं कभी-कभी इस तकनीक का उपयोग करता हूं।

+0

ग्रेट टिप! बेजोड़ लाइनों को हटाने के लिए "अनबुकमार्क लाइन्स निकालें" भी है। अक्सर मैं जो भी रखना चाहता हूं उसे आसानी से बदल सकता हूं; अब बाकी को हटाना आसान है। धन्यवाद! – jcadcell