आप रेगेक्स के साथ कैप्चर ग्रुप को कैसे देखें और विजुअल स्टूडियो 2012, 2013, 2015 और वीएस कोड में बदलें


254

मुझे लगता है कि इस बारे में एक टन प्रश्न हैं, लेकिन कोई भी मुझे विशेष रूप से संदर्भित नहीं मिला जो वीएस संस्करण उन्होंने संदर्भित किया। उस महत्वपूर्ण जानकारी की कमी के साथ, मैं अभी भी मेरे द्वारा पाए गए उत्तरों का सफलतापूर्वक उपयोग करने में असमर्थ था। सबसे आम था

  • {} से घिरा, \ 1, \ 2, \ n के साथ कैप्चर प्रदर्शित करता है

हालाँकि, ऐसा लगता है कि रेगेक्स को खोजने और विजुअल स्टूडियो में बदलने की पुरानी पद्धति है, और यह वीएस 2012 में काम नहीं करता है।


1
यह मदद में खोजने के लिए बहुत कठिन नहीं है: खोज / बदलें संवाद में, F1; पाठ को खोजने और प्रतिस्थापित करने की शुरुआत में वीएस में नियमित अभिव्यक्ति का उपयोग करने के लिए एक लिंक है ; वहाँ 2 टिप नियमित अभिव्यक्तियों में प्रतिस्थापन के लिए आपको संदर्भित करता है ; वहां यह आपको मूल बातें बताता है और कहता है कि एक गिने हुए समूह को प्रतिस्थापित करने और एक नामित समूह को प्रतिस्थापित करने के तहत अधिक विस्तार है ।
PJTraill

2
@PJTraill यह जानकर अच्छा लगा कि उन्होंने 2013 और 2015 के बीच कभी-कभी 2012 के संस्करण के लिए एक प्रश्न का उत्तर देना आसान बना दिया। हालांकि, मुझे लगता है कि यह स्पष्ट रूप से स्पष्ट है कि यह अभी भी "बहुत मुश्किल नहीं है" है। IMO: यदि स्टैक ओवरफ्लो आर्टिकल पर सर्च करना और वोट करना आसान है, तो बिना किसी की मदद के बिना ढूंढे, रिप्लेस, कैप्चर का उपयोग करें, तो यह बहुत कठिन है।
SgtPooki

एक चीज जो मुझे MSVS 2012/3 के बारे में बताती है, वह है दो अलग-अलग खोज / बदलें संवाद, विशेष रूप से छोटे (Ctrl-H) एक, जहां मैं गलती से रखता हूं (कीस्ट्रोक के साथ शायद कहीं और अर्थ रखता है) खोज का दायरा बदलकर । लेकिन जो बिंदु मैं बनाना चाहता हूं वह यह है कि बड़े (Ctrl-Shift-H) संवाद में फ़ाइंड और रिप्लेस फ़ील्ड्स के बाद बटन होते हैं जो आपको अधिक महत्वपूर्ण संभावनाओं की एक सूची देते हैं, जिसमें आप जो भी ढूंढ रहे हैं - जिसमें आप नहीं हैं मदद की ज़रूरत है! मुझे लगता है कि बहुत से लोग या तो Ctrl-H संवाद में बटन या भूमि को स्पॉट नहीं करते हैं और उन्हें देख नहीं सकते हैं।
PJTraill

मैं मानता हूं कि मदद थोड़ी परेशान करने वाली है; मुझे संदेह है कि वे सादे पाठ खोज को प्राथमिकता देते हैं। मेरे बिंदु अधिक है कि अगर एक जानता है या मान लिया गया यह वहाँ से एक होना चाहिए है सकते हैं यथोचित उसे आसानी से ढूँढ; सभी अक्सर मैं उस मार्ग का अनुसरण करता हूं, क्योंकि मैं एक बार कैनोनिकल प्रलेखन का उपयोग करना पसंद करता हूं जब मैं इसे पा सकता हूं। मेरा मतलब यह नहीं था कि मैं आवाज निकालूं; मुझे लगता है कि यह "बहुत कठिन" और "बहुत कठिन नहीं" दोनों है - यदि आप "कठिन" को "कठिन" के रूप में नहीं देखते हैं और अंतर्निहित "कठिन क्या?" के उत्तर में जोड़ते हैं तो वे विपरीत नहीं हैं।
PJTraill

मैं "जानता था" कि REGEXP टैगिंग '()' का उपयोग कर रहा था, पुन: दस्तावेज़ीकरण पढ़ा, और यह काम नहीं किया ... तो मैं यहाँ यह सुनिश्चित करने के लिए आया था ... फिर मैंने कुछ और प्रयोग किए, और यह काम किया। तो IMHO MSDN प्रलेखन को सुपर स्पष्ट करने की आवश्यकता है () का उपयोग "टैग" एक अभिव्यक्ति के लिए किया जाता है, हममें से उन लोगों के लिए जिन्हें पुराने VS6 "टैग" नामकरण सीखना था। यह अच्छा होगा यदि वे उसी नामकरण का उपयोग कर सकें। गिने हुए समूह ... बस पर्याप्‍त रूप से पर्याप्‍त आईएमएचओ को फायर नहीं करता है।
रॉस यंगब्लड

जवाबों:


355

वीएस 2012 और वीएस 2015 को खोजने और बदलने के लिए आप निम्नलिखित कार्य करते हैं:

उदाहरण (सायनिप के लिए धन्यवाद)

खोज विकल्पों में, सुनिश्चित करें कि 'नियमित अभिव्यक्ति का उपयोग करें' की जाँच की जाती है, और खोजने के लिए निम्नलिखित को पाठ के रूप में रखें:

_platformActions.InstallApp\((.+)\)

और इसे बदलने के लिए पाठ के रूप में निम्नलिखित हैं:

this.Platform().App($1).Install()

नोट: जैसा कि SLaks नीचे एक टिप्पणी में बताते हैं, रेगेक्स सिंटैक्स में परिवर्तन VS2012 मानक .Net रेगेक्स इंजन के कारण है।

नोट: एक अन्य टिप्पणीकार ने बताया कि यह विजुअल स्टूडियो कोड (vscode) में भी काम करता है


10
अधिक सामान्य होने के लिए, VS2012 अब मानक .Net रेगेक्स इंजन का उपयोग करता है।
SLKs

4
आप के बीच की अवधि चार से बचने के लिए की जरूरत नहीं है _platformActionsऔर InstallApp?
rory.ap

अब इस बारे में सोचकर ही समझ में आएगा। मैंने इसका परीक्षण नहीं किया है। वहाँ एक संपादित करने के लिए स्वतंत्र महसूस करें।
SgtPooki

1
अंत मैं संख्यात्मक नाम के रूप में इस्तेमाल किया मेरे लिए कम से कम काम नहीं कर रहा है। (?<rval>.+)खोज और ${rval}
बदले में

2
कुछ अतिरिक्त सहायता: यदि आप चीज़ को बदलना चाहते हैं ((। *) चीज़ $ 18 के साथ (कैप्चर के बाद सीधे '8' जोड़कर) तो आपको $ {1} 8 का उपयोग करना होगा
Luc Bloom

17

इसका एक उदाहरण जोड़ने के लिए, मुझे अपने कोड में कुछ करना होगा:

क्या ढूँडो:

_platformActions.InstallApp\((.+)\)

से बदलो:

this.Platform().App($1).Install()

यह किसी भी कॉल को इनस्टॉलऐप (x) के साथ बदल देता है। इस के साथ .Platform ()। App (x) .Install ()।

* खोजें विकल्प में "नियमित अभिव्यक्ति का उपयोग करें" को चिह्नित करना न भूलें


10

यदि आप समूह नामों का उपयोग करके काम करना चाहते हैं (ऊपर के समान नमूने का उपयोग करके):

क्या ढूँडो:

_platformActions\.InstallApp\((?<mygroupname>.+)\)

से बदलो:

this.Platform().App(${mygroupname}).Install()

9

उपरोक्त उत्तरों को सुधारने के लिए: आपको प्रतिस्थापित करना चाहिए

_platformActions.InstallApp\((.+)\)

साथ में

this.Platform().App(${1}).Install()

यदि आप कभी भी कैप्चर के पीछे कोई संख्या जोड़ना चाहते हैं तो $ {1} का ध्यान रखें । $1818 वीं खोज कैप्चर को सम्मिलित करने का प्रयास करेंगे, न कि किसी 8संलग्न के साथ पहली बार ।

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