नोटपैड ++ में ^ और ~ के बीच टेक्स्ट खोजें और बदलें


22

मेरे पास एक बड़ी पाठ फ़ाइल है जहाँ मैं ^ प्रतीक और ~ प्रतीक के बीच के सभी पाठ निकालना चाहता हूँ। इसके लिए लाइनों में भी काम करने की जरूरत है।

मैंने ^*~खोज बॉक्स में एक नियमित रूप से फाइंड और रिप्लेसमेंट का उपयोग करने की कोशिश की और रिप्लेसमेंट बॉक्स में कुछ भी नहीं था लेकिन इसमें 0 परिणाम मिले।

जवाबों:


24

यह नियमित रूप से ढूंढें और बदलें के साथ संभव नहीं है । यदि आप नोटपैड ++ 6 का उपयोग करते हैं, तो आप नए रेगेक्स इंजन का लाभ उठा सकते हैं जो पीसीआरई ( स्रोत ) का समर्थन करता है ।

प्रेस और प्रतिस्थापन डायलॉग खोलने और निम्नलिखित क्रिया करने के लिए Ctrl+ दबाएँ :H

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

अब सभी घटनाओं को बदलने के लिए Alt+ दबाएँ A।

जो कुछ इस प्रकार से रचा गया है उसे पाने में नियमित अभिव्यक्ति :

  • \^एक शाब्दिक ^ है ।
  • .*? कम से कम वर्ण है जो नियमित अभिव्यक्ति को मिलान करने की अनुमति देता है।
  • ~एक शाब्दिक ~ है ।

3
यदि आप बदलते हैं। * ~ ~ से [^ ~] * ~ तो यह PCRE की आवश्यकता / उपयोग किए बिना कार्य करना चाहिए
— बार्लोप

1
@barlop: मैंने नियमित रूप से खोज मोड के रूप में ढूँढें और बदलें को लिया : सामान्य , नियमित रूप से अभिव्यक्ति का उपयोग करके ढूँढें और बदलें नहीं । वह गलतफहमी रही होगी। किसी भी स्थिति में, यदि मुझे सही याद है, तो 6 से पहले के संस्करणों ने बहु-लाइन पैटर्न का समर्थन नहीं किया था।
— डेनिस

.*?पैटर्न मेरे लिए काम किया वर्णों के बीच खोज करने के लिए ;और <। तो यह खोज FIND ;.*?<REPLACE ;के लिए चुने गए विकल्पों के साथ है Regular expressionऔर. matches new line
— SherlockSpreadsheets

8

आप खोज करना \^.*?~और सुनिश्चित करना चाहते हैं । मैचों की नई रेखा सक्षम है:

यहाँ छवि विवरण दर्ज करें

ऐसा इसलिए है क्योंकि ^इसका एक विशेष अर्थ है, यह एक रेखा की शुरुआत से मेल खाता है। इस प्रकार, हमें इसे बैकस्लैश के साथ बच निकलने की आवश्यकता है \^।

लेखन ^*"एक पंक्ति में स्टार्ट-ऑफ की किसी भी संख्या" से मेल खाएगा। .*"किसी भी वर्ण" से मेल खाता है, लेकिन डिफ़ॉल्ट रूप से यह नई सूचियों से मेल नहीं खाता है।


2
रेगेक्स के लालची व्यवहार से सावधान रहें। यदि एक से अधिक ~वर्ण हैं (या एकाधिक मिलान) तो यह ^अंतिम से पहले सभी तरह से मेल खाएगा ~।
— हैवीड

@heavyd <प्रश्न> क्या आप सुनिश्चित हैं? </ प्रश्न> उन्होंने इस्तेमाल किया है *?कि यह लालची नहीं है यह आलसी है जो .*?~कभी भी एक से अधिक मेल नहीं खाएगा ~। तो ये ठीक है।
— बार्लोप

@barlop: उन्होंने जवाब देने के तुरंत बाद टिप्पणी की। यह एक निंजा-संपादन था।
— डेर होकस्टापलर

2

इस खंड में \^[^~]*~ ^ और ~ के बीच सब कुछ को बदलने के लिए खोज अनुभाग में उपयोग करने का प्रयास करें ।


और विशेष रूप से, तब मुझे लगता है कि PCRE की आवश्यकता है, तो कुछ करें (? <= ^) [^ ~] * ((=? ~) मेरे पास यह परीक्षण करने के लिए n ++ नहीं है, butif जो बदलने की कोशिश करने में विफल रहता है? <=> ) से (? <= \ ^)
— बारलोप

विशेष रूप से, बस के साथ बदलें ^~।
— डेनिस

@Dennis मेरा मतलब है वह के बीच सब कुछ ^ और ~ को बदलने के लिए चाहता है, लेकिन अगर सहित नहीं ^ और ~
— barlop

1
नहीं है कि आप क्या मिलता है अगर आप के \^[^~]*~साथ बदलें ^~?
— डेनिस

@ डेनिस ओह मैं देख रहा हूं कि आपका क्या मतलब है, अच्छी बात है।
— बार्लोप

0

मुझे शुरू और अंत के पात्रों के साथ एक समान बेटन बदलने की आवश्यकता थी। यह आउटलुक ईमेल से आया है; सदस्यों की <गड़गड़ाहट और मैं सिर्फ RemoveTextHere के बीच हटाए गए व्यक्ति के नाम चाहता था >।

मूल

First1 Last1 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

डेनिस मेरे समाधान के करीब था Find what: \^.*?~लेकिन मुझे अपने शाब्दिक पात्रों को बदलना Find what: \<.*?>पड़ा तब मुझे पहली स्लैश को हटाना पड़ा Find what: <.*?>।

अपडेट किया गया Find what: <.*?> ; खाली की जगह।

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

विशेष वर्ण : *, $, \, +, ^, (और ), [, ], {और}

विशेष पात्रों का वर्णन जेरी जेरेमिया ने यहां किया है /programming/37742519/notepad-dildcard ।


इस सवाल का जवाब नहीं है।
— टोटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.