2010-07-02 13 views
45

मैं निम्नलिखित 2 लाइनों के लिए ग्रहण के माध्यम से एक से अधिक फ़ाइलों खोज करना चाहते हैं:एक्लिप्स के माध्यम से 2 लाइनों (एक साथ) को कैसे खोज और प्रतिस्थापित कर सकते हैं?

@Length(max = L_255) 
private String description; 

और उन्हें इन दोनों के साथ बदलें:

@Length(max = L_255, message="{validator.description.len}") 
private String description; 
+1

ने यह लाइन दिखाने के लिए कोड के रूप में लाइन बनाई है कि यह 2 लाइनों पर है। CTRL + H मुझे खोज और प्रतिस्थापन – Sam

उत्तर

36

खोजें ग्रहण में डिफ़ॉल्ट रूप से बहु लाइन जब आप regex का उपयोग कर रहे हैं:

(\@Length\(max = L_255)\)([\r\n\s]+private) 

मैं जोड़ना चाहते हैं "निजी स्ट्रिंग वर्णन,"

(\@Length\(max = L_255)\)([\r\n\s]+private\s+?String\s+description\s*?;) 

प्रतिस्थापित द्वारा:

\1, message="{validator.description.len}")\2 

यह एक CTRL से शुरू हो रहा एक फ़ाइल खोज पूरी तरह से काम करता है - एच

Eclipse multi-line search

Tika के answer में उल्लेख किया है, आप सीधे "युक्त टेक्स्ट" फ़ील्ड में चयनित दो पंक्तियों कॉपी कर सकते हैं: उन पंक्तियों ग्रहण द्वारा आप के लिए एक regexp के रूप में परिवर्तित हो जाएगा।

+0

मैं "निजी स्ट्रिंग विवरण" जोड़ना चाहता हूं; मेरी खोज के हिस्से के रूप में @ लम्बाई (अधिकतम = L_255) लाइन भी "निजी स्ट्रिंग नाम" जैसे अन्य क्षेत्रों के लिए मौजूद है। तो उपर्युक्त सुझाव काम नहीं करेगा। – Sam

+0

मैं कई लगातार लाइनों को खोजने की कोशिश कर रहा हूं। – Sam

+1

@ सैमुएल: चित्र जोड़ा गया, जवाब में आपकी पूरी लाइन लेने के लिए अपडेट किया गया जवाब। यह कई लगातार लाइनों के लिए काम करेगा। कोशिश करो। – VonC

0

है कि आपके सभी फ़ाइलों वाले फ़ोल्डर का चयन करें और Ctrl दबाएँ + एच

+0

संख्या के लिए 2 लाइनें जोड़ने नहीं देता है, CTRL + H 2 लाइन नहीं लेता है, यह मेरी समस्या है – Sam

+0

लाइनों को अलग से करें? या एक multiline नियमित अभिव्यक्ति का प्रयास करें। –

+0

मैं इसे अलग से नहीं कर सकता क्योंकि यह अन्य क्षेत्रों को प्रभावित कर सकता है। मैं मल्टीलाइन अभिव्यक्ति को समझने में सक्षम नहीं था जो उपर्युक्त 2 लाइनों को सही ढंग से पहचान लेगा, इसलिए सवाल। – Sam

49

किसी चयनित ब्लॉक के लिए रेगेक्स कैसे प्राप्त करें इस पर एक और युक्ति। उन फ़ाइलों में से एक खोलें जिनमें एकाधिक रेखाएं (मल्टीलाइन) को खोजने या बदलने के लिए खोलें। पर क्लिक करें Ctrl + एफ और "नियमित अभिव्यक्ति" का चयन करें। खोजें/बदलें विंडो बंद करें। आपको आवश्यक ब्लॉक का चयन करें और फिर से क्लिक करें Ctrl + F विंडो ढूंढें/बदलें विंडो खोलने के लिए। अब टेक्स्ट बॉक्स में खोजें आपके पास नियमित अभिव्यक्ति है जो आपके चयन ब्लॉक से बिल्कुल मेल खाती है।

(मैं केवल बहुत लंबे ब्लॉक :) के लिए मैन्युअल रूप से एक regexp बनाने के बाद इस खोज की,

+0

बहुत अच्छा! धन्यवाद! +1 –

+0

उत्कृष्ट टिप! धन्यवाद, आपने मुझे अपना रेगेक्स बनाने का तरीका समझने में काफी समय बचाया। – Anth0

+1

आप इस चाल का उपयोग फ़ाइल खोज में प्रतिलिपि बनाने के लिए रेगेक्स बनाने के लिए भी कर सकते हैं। विशाल समय बचतकर्ता, धन्यवाद! – nerdherd

14

Ctrl + एच दो पंक्तियों ले अगर आप regexp का उपयोग करें (और तुम अपने आप से regexp लिखने की जरूरत नहीं है करता है, ग्रहण आपके लिए करता है)।

  1. अपनी लाइनों का चयन करें।
  2. CTRL + H पर क्लिक करें। खोज संवाद खुलता है। यदि "नियमित अभिव्यक्ति" पहले ही चेक हो चुकी है, तो ग्रहण आपके द्वारा खोजी गई दो पंक्तियों को आपके लिए regexp में परिवर्तित कर देगा, खोज पर क्लिक करें। हैं "नियमित अभिव्यक्ति" अगर पहले से चेक नहीं ", यह जाँच करें और रद्द करें क्लिक करें (ग्रहण अपने choise याद है)।
  3. अपने लाइनों फिर से का चयन करें।
  4. क्लिक करें Ctrl + एच। खोज संवाद को खोलता है। इस बार" नियमित अभिव्यक्ति "पहले से ही चुना गया है।ग्रहण ने आपके लिए खोजे गए दो लाइनों को आपके लिए regexp में बदल दिया होगा, खोज पर क्लिक करें।
+2

मुझे समाधान का आपका विवरण सबसे अच्छा, सरल और तेज़ और मूर्खतापूर्ण पसंद है। Thnx! – Daren

+0

दूसरी पंक्ति छुपे हुए मणि सुविधा है .. धन्यवाद – nick

2

एक मैन्युअल रूप से निर्माण नियमित अभिव्यक्ति के हिस्से के रूप एकाधिक पंक्तियों सहित के लिए एक त्वरित टिप:

कहाँ आप सामान्य रूप से .* का प्रयोग करेंगे किसी भी चरित्र शून्य या अधिक बार मैच के लिए, बजाय (?:.|\r?\n)* की तरह कुछ प्रयोग करने पर विचार। या इसे गैर-लालची बनाने के लिए अतिरिक्त ? डालें।

स्पष्टीकरण: . से मेल नहीं खाता नई लाइनों ऐसा करने के लिए एक "या तो-या" की जरूरत है: कोष्ठक या तो पाइप या उसके बाद नई लाइन से पहले . मेल खाते हैं। ?\r के बाद विंडोज या यूनिक्स नई लाइनों को अनुमति देने के लिए लाइन फीड वैकल्पिक से पहले कैरिज रिटर्न बनाता है। ?: पूरी चीज को कैप्चरिंग समूह के रूप में शामिल करता है (जो स्टैक ओवरफ़्लो से बचने में मदद करता है)।

+0

जब मैं ग्रहण (4.5) में इसे आजमाता हूं: 'प्रकाशक (?:। | \ R? \ N) * 'यह संवाद में एक त्रुटि दिखाता है" पैटर्न बहुत जटिल खोजें " संपादित करें: अंत में प्रश्न चिह्न जोड़ना: 'प्रकाशक (?:। | \ R? \ N) *? 'यह काम करता है! टिप और रेगेक्स स्पष्टीकरण के लिए धन्यवाद। – NathanChristie

+1

कुछ ऐसे मामले हैं जहां मैं दूसरे शब्द में बहुत से वर्ण जोड़ता हूं, जिन्हें मैं खोजना चाहता हूं, फिर भी मुझे "पैटर्न बहुत जटिल खोजें" त्रुटि दिखाई देती है। तो 'प्रकाशक (?:। | \ R? \ N) *? Id' काम करता है लेकिन' प्रकाशक (?:। | \ R? \ N) *? पहचान' त्रुटि प्रदर्शित करता है – NathanChristie

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