मेरे पास ३०,००० पंक्तियाँ हैं, जिनमें उनमें रिक्त स्थान की संख्या है। मुझे प्रत्येक पंक्ति में केवल पहले स्थान पर एक वर्ण जोड़ने की आवश्यकता है। कोई भी जो कुछ भी सुझा सकता है, उसकी बहुत सराहना की जाएगी।
मेरे पास ३०,००० पंक्तियाँ हैं, जिनमें उनमें रिक्त स्थान की संख्या है। मुझे प्रत्येक पंक्ति में केवल पहले स्थान पर एक वर्ण जोड़ने की आवश्यकता है। कोई भी जो कुछ भी सुझा सकता है, उसकी बहुत सराहना की जाएगी।
जवाबों:
^\S+\h\K
%
स्पष्टीकरण:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
रिप्लेसमेंट:
% # the character to insert
दिया हुआ:
I have 30,000 lines of text that have randon
number of spaces in them. I need to add a character
to just the first SPACE in each line.
Any who can suggest anything would be
greatly appreciated.
दिए गए उदाहरण के लिए परिणाम:
I %have 30,000 lines of text that have randon
number %of spaces in them. I need to add a character
to %just the first SPACE in each line.
Any %who can suggest anything would be
greatly %appreciated.
टेक्स्टपैड का प्रयास करें। आप मैक्रोज़ रिकॉर्ड कर सकते हैं और फिर उन्हें वापस खेल सकते हैं। इसलिए पहली पंक्ति के लिए आप जो करना चाहते हैं उसे रिकॉर्ड करें और पहली पंक्ति पूरी करने के बाद, अगली पंक्ति की शुरुआत में अपने कर्सर को छोड़ दें। फिर फ़ाइल के अंत तक मैक्रो चलाएं। या बस प्ले मैक्रो कुंजी को दबाए रखें।
आप जो देख रहे हैं वह नियमित अभिव्यक्ति है। पहली चीज जो आप करना चाहते हैं, वह है अपनी खोज को नियमित अभिव्यक्तियों में बदलना
खुशी होगी क्योंकि मुझे लगता है कि मुझे पता है कि इसे कैसे हल किया जाए
https://regex101.com/r/aW4gG2/1
जो अभिव्यक्ति आप चाहते हैं वह है:
खोजें: (^.*?)( )
प्रतिस्थापित करें:\1#\2
जिस तरह से यह काम करता है वह नियमित अभिव्यक्तियों में निम्नानुसार ()
है "कब्जा"। इसका मतलब है कि यह इस विशिष्ट समूह को ढूंढ लेगा और फिर आप इसे प्रतिस्थापन में \ 1 या \ 2 या \ 3 से संदर्भित कर सकते हैं। संख्या 1 से शुरू होती है और आप खुले परिकल्पना से गिनती करते हैं
^
मतलब लाइन की शुरुआत से शुरू करो। (क्योंकि आप चाहते हैं कि आपका इन्सर्ट FIRST स्पेस को कवर करने के लिए है, जिसे हम सामने से शुरू करने के लिए देखेंगे, पहला स्पेस मिलेगा)
.*?
यह भाग अंतरिक्ष के सामने पहला शब्द खोजता है। यह एक समूह को किसी भी वर्ण ( .
) में जितना संभव हो उतना बनाकर करता है ( *
लेकिन सबसे कम आवश्यक है) ?
। प्रश्न चिह्न के बिना आप हर वर्ण (सभी रिक्त स्थान सहित) पर कब्जा कर लेंगे
( )
इस भाग का अर्थ है कि हमारा दूसरा समूह पहले वाले के बाद का स्थान है। यह पहला स्थान होना चाहिए। यही हम अपने चरित्र को सम्मिलित करना चाहते हैं।
स्थानापन्न
\1#\2
\1
प्रथम वर्ण को संदर्भित करता है। और *
अभिव्यक्ति में इसका मतलब है कि वर्ण सेट 0 सहित किसी भी लम्बाई का शब्द हो सकता है।
#
सम्मिलित चरित्र है
\2\
बेशक अंतरिक्ष है।
नतीजा #
हर पहली जगह के सामने रख रहा है। यदि आप चाहते हैं कि यह पहली जगह के बाद यह प्रतिस्थापन को समायोजित करने के रूप में सरल है
\1\2#
#
हर पहली जगह प्रति पंक्ति के बाद रखा जाएगा ।
यह नियमित अभिव्यक्ति की शक्ति है। एक साधारण खोज और प्रतिस्थापन किसी भी मैक्रो की तुलना में अधिक सटीक रूप से सम्मिलित कर सकते हैं। यह लचीला है यह तेज़ है और अधिकांश समय यह उतना कठिन नहीं है।
यहाँ एक महान स्टार्टर ट्यूटोरियल है जो यह बताना चाहिए कि RegEx क्या है और यह क्यों उपयोगी है। [ RegExOne ]। आरईओ वह है जो मुझे समझने के लिए मिला है
यह एक ट्यूटोरियल है जो बहुत से लोग सलाह देते हैं कि ईमानदारी से मैं बहुत समझ नहीं बना सकता। [ RegEx.Info ]
मैं वास्तव में कभी भी RegEx.info में वापस नहीं गया था मैं सीधे नोटपैड ++ डॉक्यूमेंटेशन में कूद गया जो वास्तव में इस बिंदु पर बहुत उपयोगी था। वह और निश्चित रूप से आप [ RegEx101 ] के साथ परीक्षण कर सकते हैं । केवल एक चीज जो आप करना चाहते हैं वह /gm
है अभिव्यक्ति में जोड़ना । तब आप टेस्टस्ट्रीमिंग में सिर्फ एक स्निपेट पेस्ट कर सकते हैं और तब तक अभ्यास कर सकते हैं जब तक आप इसे सही न कर लें।