2012-12-01 10 views
9

में नियमित अभिव्यक्ति में अक्षरों के मामले को कैसे बदलें उदाहरण के लिए, इस तरह की कई पंक्तियां हैं: "शब्द - परिभाषा"। नोटपैड ++ में नियमित अभिव्यक्तियों को "टर्म" में किया जा सकता है अपरकेस (पूंजी) अक्षरों में लिखा गया था - टीईआरएम?नोटपैड ++

धन्यवाद!

उत्तर

14
Find what: ^(\S+)(?=\s*-) 
Replace with: \U$1 

यह क्या करता है? खोज पैटर्न जितना संभव हो सके लाइन की शुरुआत में कई गैर-स्पेस वर्णों से मेल खाता है (\S+) और उन्हें कोष्ठक के कारण परिवर्तनीय $1 में कैप्चर करता है। उसके बाद एक लुकहेड का पालन करता है जो दावा करता है कि यह "शब्द" एक हाइफ़न (बीच में किसी और के बिना) के बाद होता है। यह लुकहेड वास्तव में मैच में शामिल नहीं है, इसलिए इसे हटाया/बदला नहीं जाएगा।

प्रतिस्थापन \U के साथ शुरू होता है जो कहता है "ऊपरी मामले में यहां सब कुछ आउटपुट करें जब तक कि आप \E के साथ इसे रोक नहीं देते"। फिर $1 वापस लिखता है कि हमने \S+ (आपके मामले में term) के साथ मिलान किया था। लेकिन ऊपरी मामले में।

नोटपैड ++ पर अपडेट करना सुनिश्चित करें 6. इससे पहले कि नियमित अभिव्यक्ति थोड़ा विचित्र हो।

Here is the documentation of what's possible in the replacement string.

संपादित करें:

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

Find what: ^(([ \t]*[^\s-]+)*)(?=[ \t]*-) 

लेकिन वास्तविक बिना इनपुट उदाहरण, मुझे डर है कि आपको उचित खोज पैटर्न को स्वयं समझना होगा।

+0

+1 यह बहुत अच्छा है! – Anirudha

+0

अब मैं निष्कर्ष पर कूदने से पहले 'दस्तावेज़ीकरण' का उल्लेख करता हूं – Anirudha

+0

आपको बहुत धन्यवाद, मुझे यह एहसास नहीं हुआ, लेकिन यह काम करता है! –