नोटपैड ++ का उपयोग करके हर पंक्ति पर सभी डुप्लिकेट किए गए शब्दों को कैसे हटाया जाए?


11

मैं एक फाइल पर काम कर रहा हूं जिसमें कीवर्ड्स के साथ लाइनें हैं और कुछ लाइनों में डुप्लीकेट कीवर्ड हैं।

उदाहरण के लिए:

dangerous,dangerous,hazardous,perilous

मैं नोटपैड ++ को बताना चाहता हूं कि मैं प्रति पंक्ति प्रत्येक डुप्लिकेट शब्द को निकालना चाहता हूं। इस उदाहरण dangerous,को हटा दिया जाएगा:

dangerous,hazardous,perilous

मेरे पास लाइनों का एक गुच्छा है और इसलिए मैं ऐसा करने का एक स्वचालित तरीका ढूंढ रहा हूं।


1
किस बारे में dangerous,hazardous,dangerous,perilous? दूसरे शब्दों में, हमेशा एक दूसरे के बगल में दोहराए गए शब्द होते हैं?
डैनियल बेक

जवाबों:


11

आप एक पंक्ति में लगातार दोहराए गए शब्दों को हटाने के लिए एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं, हालांकि मुझे नहीं लगता कि दोहराए गए शब्दों को निकालना संभव है जो लगातार नहीं हैं (जैसे dangerous, hazardous, dangerous)।

नोटपैड ++ में प्रतिस्थापित विंडो में इस रेगेक्स का उपयोग करें, और नीचे दिए गए खोज मोड के रूप में "नियमित अभिव्यक्ति" का चयन करना न भूलें:

यह रेगेक्स लगातार सभी दोहराए गए शब्दों को हटा देगा - चाहे वह 2 डुप्लिकेट किए गए शब्द हों या 10 डुप्लिकेट शब्द लगातार \b(\w+)(?:,\s+\1\b)+ :।

ठीक वही नो-कॉमा रीगेक्स होगा: \b(\w+)(?:\s+\1\b)+(अन्य उपयोगकर्ताओं के लिए उपयोगी हो सकता है)।

यदि आप विशेष रूप से केवल दो डुप्लिकेट शब्दों (डबल्स) के लिए एक रेगेक्स चाहते हैं, तो इस रेगेक्स का उपयोग करें (\b\w+\b)\W+\1:।

इस रेगेक्स को शब्द की एक घटना रखने के लिए बॉक्स के साथ बदलें में रखें (अन्यथा सभी दोहराए गए शब्द हटा दिए जाएंगे) ${1} :।

ये नियमित अभिव्यक्तियाँ आपके प्रश्न में वर्णित एक स्थिति को एक उदाहरण के रूप में तय करेंगी। पहला रेगेक्स डुप्लिकेट शब्दों की प्रत्येक संख्या (जैसे dangerous, dangerous, dangerous, dangerous, hazardous) के लिए काम करेगा, जबकि दूसरा संस्करण केवल दो डुप्लिकेट किए गए शब्दों (जैसे dangerous, dangerous, hazardous) के लिए काम करेगा ।

नोट: नियमित अभिव्यक्ति केवल, प्रारूप प्रश्न में वर्णित के लिए लागू होगी, जिसका अर्थ है प्रारूपों की तरह है कि two words, two words, anotherword, two-words, two-words, anotherword, three words expression, three words expression, anotherwordबदला नहीं जाएगा क्योंकि regex उन्हें लागू नहीं होगा।


सहायता के लिए धन्यवाद! हालाँकि मुझे 0 घटनाएँ मिल रही हैं, मैंने आपके द्वारा सुझाए गए अलग-अलग खोजशब्दों के साथ ऐसा करने की कोशिश की और यह काम नहीं किया, मैंने भी कोशिश की क्योंकि वे पहले थे और कुछ भी नहीं, कृपया मेरी स्क्रीन कैप्चर की जाँच करें: goo.gl/eZ7Kp
Gabriel

यह रेगेक्स काम करना चाहिए: (\b\w+\b)\W+\1दो डुप्लिकेट शब्दों के लिए। मैं अपना उत्तर संपादित करूँगा। अल्पविराम अन्य रेगेक्स काम नहीं करता है।
amiregelz

मैंने हर संभव संयोजन, कोई अल्पविराम, केवल स्थान, कोई स्थान और अल्पविराम, और अभी तक कुछ भी नहीं करने की कोशिश की। कृपया मुझे बताएं
गेब्रियल

समस्या यह है कि नियमित अभिव्यक्ति मैं अपने जवाब में लिखा था केवल प्रारूप (मैंने सोचा) आप के लिए कहा पर लागू होता है है: word, word, anotherword। हालांकि, आपके पास कई उदाहरण हैं जो थोड़े अलग हैं, जैसे came across, came acrossऔर कुछ 3 या 4 शब्दों के साथ। इसके अलावा 'जैसे शब्द हैं don'tऔर यह नोटपैड ++ रेगेक्स सिस्टम में चीजों को और अधिक जटिल बनाता है । नोटपैड ++ रेगेक्स प्रणाली बहुत कष्टप्रद और साथ ही सीमित है, इसलिए समाधान या तो अजगर (या किसी अन्य भाषा) में रेगेक्स का उपयोग करना है, या नोटपैड ++ के लिए प्रारूप-विशिष्ट नियमित अभिव्यक्ति करना है।
एमरेलगेज

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

1

यहाँ काम करने का एक तरीका है, यह सभी डुप्लिकेट शब्दों को बदल देगा भले ही वे सन्निहित न हों:

  • Ctrl+H
  • क्या ढूँडो: (?:^|\G)(\b\w+\b),?(?=.*\1)
  • से बदलो: LEAVE EMPTY
  • चारों ओर लपेटें की जाँच करें
  • नियमित अभिव्यक्ति की जाँच करें
  • चेक न करें . matches newline
  • Replace all

स्पष्टीकरण:

(?:^|\G)    : non capture group, beginning of line or position of last match
(\b\w+\b)   : group 1, 1 or more word character (ie. [a-zA-Z0-9_]), surrounded by word boundaries
,?          : optional comma
(?=.*\1)    : positive lookahead, check if thhere is the same word (contained in group 1) somewhere after

दिए गए इनपुट की तरह: dangerous,dangerous,hazardous,perilous,dangerous,dangerous,hazardous,perilous

हमें मिला:

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