अल्पविराम से अलग किए गए मूल्यों की सूची पर काम करने के लिए एक नियमित अभिव्यक्ति की तलाश है


7

मेरे पास अल्पविराम द्वारा अलग की गई 3 लंबी संख्याओं की रेखा है। मैं जो करना चाहता हूं वह बीच में संख्या को हटाना है, और केवल पहले नंबर और अंतिम संख्या को अल्पविराम द्वारा अलग करना है।

वर्तमान में:

123456789123,723456789123456,834567885544334
123456789125,723456789123457,834567885544333
123456789126,723456789123458,834567885544337

वांछित परिणाम:

123456789123,834567885544334
123456789125,834567885544333
123456789126,834567885544337

मैंने ऐसा करने की कोशिश की, लेकिन यह इन नियमित अभिव्यक्तियों के साथ काम नहीं कर पाया:

  • स्ट्रिंग खोजने के लिए नियमित अभिव्यक्ति: %[0-9]+,[0-9]+,[0-9]+
  • स्ट्रिंग को बदलने के लिए नियमित अभिव्यक्ति: ^1,^2

जो नियमित अभिव्यक्ति वास्तव में मैं क्या हासिल करना चाहता हूं?

नोट - मैं वर्तमान में विंडोज 7 पर चलने वाले अल्ट्राडिट नामक एक एप्लिकेशन का उपयोग कर रहा हूं, यदि आप विंडोज के लिए एक बेहतर टेक्स्ट एडिटिंग एप्लिकेशन की सलाह देते हैं जो मेरी समस्या को हल कर सकता है तो कृपया मुझे बताएं।


मैंने आपके प्रश्न को संपादित किया, यदि आप उन परिवर्तनों से नाखुश हैं जो इसे फिर से वापस करने या संपादित करने के लिए स्वतंत्र महसूस करते हैं।
Baarn

जवाबों:


10

आप बस प्रत्येक पंक्ति के मध्य संख्या को कुछ नहीं के साथ बदल सकते हैं।

संपादक में

यही है, आपके संपादक में, रेगेक्स को खोजें और बदलें

,[0-9]+,

(जो केवल दोनों तरफ अल्पविरामों के साथ संख्या से मेल खाता है, जो आपके इनपुट के लिए सिर्फ मध्य संख्या है) एक एकल अल्पविराम के साथ:

,

मुझे लगता है कि अल्ट्राडिट रेगेक्स खोज और प्रतिस्थापन का समर्थन करता है। यदि नहीं, तो नोटपैड ++ का प्रयास करें, जो मुझे पता है।

कमांड लाइन से

चूंकि आपने अपना प्रश्न टैग किया है , यहाँ यह कमांड-लाइन से कैसे करना है।

एसईडी

उपयोग sedएक मानक लिनक्स कमांड भी विंडोज के लिए साइग्विन या GnuWin32 के हिस्से के रूप में उपलब्ध है:

C:\>sed -e 's/,[0-9]+,/,/g' filename.txt

शक्ति कोशिका

जेन्स ने बताया कि आप इसे विंडोज पॉवर्सशेल में भी कर सकते हैं; देख यह स्पष्टीकरण


1
यदि आप मध्य उप-अभिव्यक्ति को खाली स्ट्रिंग के साथ बदलते हैं तो यह काम नहीं करेगा। हालाँकि, आप वांछित प्रभाव प्राप्त करने के लिए इसे एकल अल्पविराम से बदल सकते हैं।
Adeel Zafar Soomro

उफ़, वो बेवक़ूफ़ था मेरा। फिक्स्ड।
Mechanical snail

3
साइगविन के बिना, आप शक्तियां उपयोग कर सकते हैं: blogs.technet.com/b/heyscriptingguy/archive/2008/01/17/...
Jens

3

रेगेक्स सिंटैक्स आवेदन से आवेदन में भिन्न होता है। मैं अल्ट्राडिट से अपरिचित हूं और एक सामान्य उत्तर दूंगा

आपके रेगेक्स में कोष्ठकों को पकड़ने का अभाव है

([0-9] +), [0-9] +, ([0-9] +)


2

पाठ को बदलने के लिए, किसी को कोष्ठक का उपयोग करके उचित उप-अभिव्यक्ति को टैग करना होगा।

UltraEdit में, आपको निम्नलिखित नियमित अभिव्यक्ति की खोज करनी चाहिए:

 %^([0-9]+^),[0-9]+,^([0-9]+^)

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