ग्रहण, नियमित अभिव्यक्ति खोज और प्रतिस्थापित


119

ग्रहण में, क्या मिलान अभिव्यक्ति स्ट्रिंग को नियमित अभिव्यक्ति खोज और प्रतिस्थापित करते समय प्रतिस्थापित स्ट्रिंग के भाग के रूप में उपयोग करना संभव है?

मूल रूप से, मैं सभी घटनाओं को प्रतिस्थापित करना चाहता हूं

variableName.someMethod()

साथ में:

((TypeName)variableName.someMethod())

जहाँ variableName किसी भी चर नाम का हो सकता है।

में sed मैं की तरह कुछ इस्तेमाल कर सकते हैं:

s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g

वह है, और मिलान किए गए खोज स्ट्रिंग का प्रतिनिधित्व करता है। क्या ग्रहण में भी कुछ ऐसा ही है?

धन्यवाद!


ग्रहण RegEx पर अच्छा दस्तावेज: help.eclipse.org/kepler/…
कैनियन

जवाबों:


225

हाँ, "()" एक समूह को पकड़ता है। आप इसे $ i के साथ फिर से उपयोग कर सकते हैं जहां मैं i'th कैप्चर ग्रुप हूं।

इसलिए:

खोज: (\w+\.someMethod\(\))

बदलने के: ((TypeName)$1)

संकेत: CTRL+ Spaceपाठ बॉक्स में आप नियमित अभिव्यक्ति लेखन के लिए सभी प्रकार के सुझाव देते हैं।


यह एक अच्छा जवाब है और एक उपयोगी संकेत है। यह अधिक उपयोगी होता है इसे थोड़ा और विस्तार से वर्णित किया गया था।
आईमिलिंड

ब्रावो ग्रहण, आपने इस सुविधा को ठीक से लागू किया!
केनोगू लाब्ज

मुझे विशेष रूप से "यूनिकोड चरित्र के लिए हेक्स कोड" :) के लिए उदाहरण पसंद है :)
स्टीवर्ट मुर्री

मैं कुछ कोड जोड़ना चाहूंगा जिन्होंने वास्तव में मेरी मदद की। मैं हर बदलने के लिए जरूरत stringVar.equals("xxx")के साथ "xxx".equals(stringVar)। : मुझे लगता है में निम्नलिखित regex इस्तेमाल किया / संवाद की जगह search: ([^()! ]+).equals\("(.*)"\), replace: "$2".equals\($1\)
लाडे न्यूड

मेरे लिए नहीं। हमेशा पहले समूह की जगह लेता है ...?
राइटमीयर

6

का उपयोग कर ...
खोज = (^। * आयात) (। *) (\ (*। * \) :)
प्रतिस्थापित = $ 1 $ 2

... की जगह ...

from checks import checklist(_list):

...साथ में...

from checks import checklist



रेगेक्स में ब्लॉक कोष्ठक (जो एक "\" से पहले नहीं होते हैं)

(^। * आयात) "चेक आयात से" पाता है और इसे $ 1 में लोड करता है (ग्रहण 1 पर गिनना शुरू करता है)

। * * अगला खोजें। सब कुछ "अगले सामना होने तक" ("और इसे $ 2 पर लोड करता है। $ 2 $" पर रुकता है "(" अगले भाग के कारण (नीचे की अगली पंक्ति देखें)

(\ (। * \ _) :) कहता है "पहली बार सामने आया" () "ब्लॉक $ 2 शुरू करने के बाद ... ब्लॉक $ 2 शुरू करें और $ 3 शुरू करें। $ 3" ​​(किसी भी पाठ ') के साथ लोड हो जाता है: "या, उदाहरण के लिए," (_list): "

फिर प्रतिस्थापन में, बस डाल दिया $ 1 $ 2 सभी तीन ब्लॉकों को सिर्फ पहले दो से बदलने के लिए।



स्क्रीनशॉट


3

NomeN ने सही उत्तर दिया है, लेकिन यह उत्तर मेरे जैसे शुरुआती लोगों के लिए अधिक उपयोग का नहीं होगा क्योंकि हमें हल करने के लिए एक और समस्या होगी और हमें पता नहीं चलेगा कि इसमें RegEx का उपयोग कैसे किया जाए। इसलिए मैं इसमें थोड़ा सा स्पष्टीकरण जोड़ रहा हूं। उत्तर है

खोज: (\ w + \। someMethod \ (\))

बदलें: (टाइपनाम) $ 1)

यहाँ:

खोज में:

  • प्रथम और अंतिम '(' ')' 'रीजेक्स में एक समूह को दर्शाता है

  • '\ w' शब्दों (अल्फ़ान्यूमेरिक + अंडरस्कोर) को दर्शाता है

  • '+' में एक या एक से अधिक (यानी अल्फ़ान्यूमेरिक + अंडरस्कोर का चित्रण) है

  • '।' एक विशेष चरित्र है जो किसी भी चरित्र को दर्शाता है (अर्थात। किसी भी वर्ण का एक या अधिक)। क्योंकि यह एक विशेष चरित्र है 'चित्रण'। हमें इसके साथ एक भागने का चरित्र देना चाहिए, '।'

  • 'someMethod' दिया जाता है क्योंकि इसे खोजा जाना है।

  • भागने के चरित्र के साथ दो कोष्ठक '(', ') दिए गए हैं क्योंकि वे विशेष चरित्र हैं जो एक समूह को चित्रित करने के लिए उपयोग किए जाते हैं (हम अगले बिंदु में समूह के बारे में चर्चा करेंगे)

प्रतिस्थापित में:

  • इसे ' ((TypeName) $ 1)) दिया गया है, यहाँ $ 1 में समूह को दर्शाया गया है। वह सभी वर्ण जो खोज क्षेत्र में पहले और अंतिम कोष्ठक '(', ')' के भीतर संलग्न हैं

  • यह भी सुनिश्चित करें कि आपने प्रतिस्थापित बॉक्स खोजने के लिए 'रेगुलर एक्सप्रेशन' विकल्प की जाँच की है

RegEx के बारे में अधिक जानकारी http://regexr.com/ पर देखी जा सकती है ।


2

कम से कम एसटीएस (स्प्रिंगस्रोस टूल सूट) समूहों को नंबर 0 से शुरू किया जाता है, इसलिए प्रतिस्थापित स्ट्रिंग होगी

replace: ((TypeName)$0)

5
यह सच नहीं है। $ 0 पूरे मूल खोज शब्द का प्रतिनिधित्व करता है। इस मामले में मुझे लगता है कि संयोग से काम करेगा।
वाल्टर हेक

0

किसी के लिए जिसे स्पष्टीकरण की आवश्यकता है और उदाहरण के लिए कि ग्रहण में रेगक्स का उपयोग कैसे किया जाए। यहाँ मेरा उदाहरण समस्या का चित्रण है।

यहां छवि विवरण दर्ज करें

मैं नाम बदलना चाहता हूं

/download.mp4^lecture_id=271

सेवा

/271.mp4

और इनमें से कई हो सकते हैं।

यहां बताया गया है कि यह कैसे किया जाना चाहिए।

यहां छवि विवरण दर्ज करें

फिर हिट / रिप्लेस बटन को हिट करें

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