VSCode regex गणित को खोजें और बदलें?


206
%s@{fileID: \(213[0-9]*\)@\='{fileID: '.(submatch(1)-1900)@

मैं इस रेगेक्स खोज का उपयोग कर रहा हूं और प्रत्येक मिलान आईडी से एक स्थिरांक निकालने के लिए कमांड को विम में बदल रहा हूं।

मैं VSCode में रेगेक्स खोज कर सकता हूं लेकिन मैं submatchगणित और प्रतिस्थापन के लिए संदर्भ कैसे दे सकता हूं ? submatch(1)VSCode में काम नहीं करता है?

धन्यवाद।

जवाबों:


346

(foobar)आप की एक नियमित अभिव्यक्ति को देखते हुए पहले समूह का उपयोग कर संदर्भ कर सकते हैं $1और इसी तरह यदि आपके पास इनपुट क्षेत्र में अधिक समूह हैं।


यहाँ फिर से स्पष्ट रूप से पूछा गया: stackoverflow.com/questions/35283300/…
रक्खा क्रोध

4
मुझे 2000 लाइन की फ़ाइल के <p>(.*)</p>साथ प्रतिस्थापित करना <p>\n\t\t\t\t\t\t$1\n\t\t\t\t\t</p>था। मुझे मैन्युअल रूप से करने की कल्पना करो।
बिश्व मिश्र

100

एक उदाहरण के साथ बेंजामिन का जवाब बढ़ाने के लिए:

Find        Carrots(With)Dip(Are)Yummy
Replace     Bananas$1Mustard$2Gross
Result      BananasWithMustardAreGross

कोष्ठक में कुछ भी एक नियमित अभिव्यक्ति हो सकती है।


इसने मुझे याद दिलाया कि अगर मैं बयान पर रेगेक्स कर रहा हूं तो मुझे कोष्ठक से बचना चाहिए।
घड़ी की कल की

65

बस एक और उदाहरण जोड़ने के लिए:

मैं img html टैग में src attr की जगह ले रहा था, लेकिन मुझे केवल src को बदलने और img घोषणा और src विशेषता के बीच किसी भी पाठ को रखने की आवश्यकता थी।

मैंने इमेज में रिप्लेस + रिप्लेसमेंट टूल (ctrl + h) का उपयोग किया है: ढूँढें और बदलें


8
मेरे लिए यह असंगत रूप से काम करता है - हालांकि चयन कांटे सही हैं, आउटपुट कभी-कभी $1प्रतिस्थापन के बिना रहता है
Godblessstrawberry

1
नमस्ते, @godblessstrawberry, क्या आप अपनी खोज और प्रतिस्थापन के तार साझा कर सकते हैं?
डियोगो पास्चोलाल

2
हाय @Diogo मैं projectwide को बदलने के लिए कोशिश कर रहा था \[innerHtml\]\s*=\s*"'(.*)'\s*\|\s*translate\s*"के साथ myTranslate="$1"और यह कुंजी बेतरतीब ढंग से लंघन किया गया था और $ 1 के बजाय समूह मूल्य कभी कभी डालने। 1.28.0 में अपडेट ने इस मुद्दे को हल कर दिया
godblessstrawberry

मैं उसी समस्या में भाग गया, जैसे @godblessstrawberry, अपनी सभी फाइलों को रिप्लेस '(और (या | \ + | \ -) ​​\ n (*)' से करने और रिप्लेसमेंट स्ट्रिंग '\ n $ 2 $ 1' को कभी-कभी सही ढंग से बदलने के लिए करता है। बाइनरी ऑपरेटर को न्यूलाइन की शुरुआत में स्थानांतरित कर दिया लेकिन अन्य मामलों में सिर्फ $ 2 $ 1 डाला। VSCodium में एक बग दिखाई देगा
टॉम

@godblessstrawberry, इसे देखें: github.com/microsoft/vscode/issues/81825 । यदि यह आपके लिए लागू नहीं होता है, तो अधिक जानकारी प्रदान करें और वहां एक समस्या खोलें।
डायगो पास्चोचल

9

मेरे मामले में $ 1 काम नहीं कर रहा था, लेकिन $ 0 मेरे उद्देश्य के लिए ठीक काम करता है।

इस मामले में मैं तार को लारवेल में अनुवाद करने के लिए सही प्रारूप के साथ बदलने की कोशिश कर रहा था, मुझे आशा है कि यह किसी और के लिए उपयोगी हो सकता है क्योंकि इसे हल करने में मुझे थोड़ा समय लगा!

Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}

रेगेक्स रिप्लेसमेंट स्ट्रिंग फॉर लारवेल ट्रांसलेशन


1
क्या यह संभव है कि आप अपने पोस्ट को संपादित करें और छवि के बजाय कोड को कॉपी करें? यह विज़ुअलाइज़ेशन के लिए बेहतर होगा।
पंखुड़ी

3

शुरुआती लोगों के लिए, स्वीकृत उत्तर सही है, लेकिन थोड़ा सा यदि आप वीएससी या रेगेक्स से परिचित नहीं हैं, तो थोड़ा उल्टा।

इस मामले में, यह आपका पहला संपर्क है:

पाठ खोजने और संशोधित करने के लिए ,

  1. "फाइंड" चरण में, आप "कैप्चरिंग ग्रुप्स," जैसे I want to find (group1) and (group2), कोष्ठक का उपयोग करके रेगेक्स का उपयोग कर सकते हैं । यह वैसा ही पाठ ढूंढेगा I want to find group1 and group2, लेकिन इस अंतर के साथ कि आप फिर संदर्भ ले सकते हैं group1और group2अगले चरण में:

  2. "बदलें" चरण में, आप कैप्चरिंग समूहों को इसके माध्यम से संदर्भित कर सकते हैं $1, $2आदि, इसलिए आप वाक्य को बदल सकते हैं I found $1 and $2 having a picnic, जो आउटपुट देगाI found group1 and group2 having a picnic.

टिप्पणियाँ:

  • सिर्फ एक स्ट्रिंग के बजाय, अंदर या बाहर कुछ भी ()एक नियमित अभिव्यक्ति हो सकती है।

  • $0 पूरे मैच को संदर्भित करता है


2

एक और सरल उदाहरण:

Search: style="(.+?)"
Replace: css={css`$1`}

HTML को JSX में इमोशन / css के साथ परिवर्तित करने के लिए उपयोगी है!

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