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


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.