2011-10-21 13 views
26

विजुअल स्टूडियो में, जब मैं चयन के भीतर खोज करता हूं, तो मैं नियमित अभिव्यक्तियों का उपयोग करके प्रति पंक्ति एक मैच के पहले उदाहरण (या दूसरे, तीसरे, आदि) को प्रतिस्थापित करना चाहता हूं। यह मैं कैसे करूंगा?विजुअल स्टूडियो में खोजें और प्रतिस्थापित करें

खोजें और निम्न में

foo1 = foo1; 
foo2 = foo2; 
... 
foo20 = foo20; 

बदलें।

foo1 = bar1; 
foo2 = bar2; 
... 
foo20 = bar20; 

उत्तर

33

दृश्य स्टूडियो 2010 और इससे पहले, वापस संदर्भ के साथ रेगुलर एक्सप्रेशन का उपयोग में

विजुअल स्टूडियो का नियमित अभिव्यक्ति जो मैंने सीखा है उससे बिल्कुल अलग है। सही जवाब जानने के लिए मुझे कुछ समय लगा। के लिए

{foo}{:d+} = \1\2 

खोजें बदलें साथ

\1\2 = bar\2 

वापस संदर्भ घुंघराले ब्रेसिज़ {foo} साथ tagging द्वारा किया जाता है।

Regex.Replace(input, @"(?<=\=)[^;0-9]*(?=[0-9]*;)", replacewith); 

= और (anynumber); के लिए यह खोज और की जगह के बीच है कि: यदि आप अधिक चर होगा :d+ के लिए \d+

Read more about VS RegEx here

+0

क्या यह रेगेक्स वापस नहीं आएगा? बार 1 = बार 1; बार 2 = बार 2; ... बार 20 = बार 20; – San

+0

नहीं, यह नहीं होगा। क्या मैं कुछ भूल गया? –

+0

क्या आपने अपना पोस्ट संपादित किया है? मुझे एक और संस्करण याद है। यह ठीक है =) – San

2

मैं भी एक नियमित अभिव्यक्ति के बिना किया जा सकता है:

= bar साथ = foo बदलें।

एक रेगुलर एक्सप्रेशन आवश्यक है, एक का उपयोग कर सकते हैं:

foo(\d*) = foo(\d*); 

से बदले:

foo\1 = bar\2; 
+0

यह वास्तव वजह से काम नहीं होता '\ d' विजुअल स्टूडियो में एक स्वीकृत चरित्र नहीं है। –

+2

कम से कम बनाम 2012 में '$ 1', '' 1' का उपयोग करने की आवश्यकता को बदलने के लिए बैकरेफर। – mbomb007

+0

यह विजुअल स्टूडियो के पुराने, पूर्व-2012 संस्करणों के लिए है। नए संस्करणों के लिए इस प्रश्न का उत्तर देखें: https://stackoverflow.com/questions/3147096/visual-studio-find-and-replace-regex/3147177#3147177 – paulwesterberg

-1

में ही है।

संपादित करें: संख्या वैकल्पिक है।

+1

यह प्रश्न विजुअल स्टूडियो के ढूँढें/बदलें मॉड्यूल का उपयोग करने के बारे में है, वीबी के बारे में नहीं। – mbomb007

70

विजुअल स्टूडियो 2012 में, कैप्चर समूह और बैकरेफर का उपयोग सी # की तरह ही किया जाता है। आप उन्हें सामान्य कोष्ठक के साथ कैप्चर कर सकते हैं, और उन्हें $ 0, $ 1, आदि के साथ बैकरेफर कर सकते हैं। उम्मीद है कि इससे मदद मिलती है!

ध्यान दें कि सिंटैक्स $1 खोज-प्रतिस्थापन के लिए उपयोग किया जाता है, लेकिन \1 खोज स्ट्रिंग में बैकरेरेंस के लिए उपयोग किया जाता है।

+2

मैं निष्कर्ष निकालने वाला था कि विजुअल स्टूडियो 2012 से बैकरेफर को हटा दिया गया था जब तक कि मैं यह जवाब नहीं पढ़ता। आधिकारिक दस्तावेज में इसका उल्लेख नहीं किया गया है http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx –

+1

बस वीएस 2012, एक reg के लिए एक उदाहरण के साथ विस्तृत करने के लिए। exp। एक XML दस्तावेज में पाठ तत्वों से आसपास के उद्धरण को हटाने के लिए: _Find box_: **> "(*।)" <** _Replace box_: **> $ 1 <** वी.एस. में उचित नियमित अभिव्यक्ति के लिए –

+2

हुज़्ज़ाह 2012! यह बहुत बड़ा है! –

1
यहाँ

यह है, टाइप बिल्कुल के रूप में इसे यहाँ प्रदर्शित किया जाता है

खोज: (\w+\d+\s*=\s*)[^\d]+(\d+);

बदलें: $1bar$2;


और अधिक पढ़ें: Using Regular Expressions in Visual Studio

संबंधित मुद्दे