विजुअल स्टूडियो कोड का Regex किस स्वाद का उपयोग करता है?


130

विज़ुअल स्टूडियो कोड में खोज-प्रतिस्थापन की कोशिश करते हुए, मुझे पता चलता है कि इसका रेगेक्स स्वाद पूर्ण विज़ुअल स्टूडियो से अलग है। विशेष रूप से, मैं एक नामित समूह घोषित करने की कोशिश करता हूं string (?<p>[\w]+)जिसके साथ विजुअल स्टूडियो में काम होता है लेकिन विज़ुअल स्टूडियो कोड में नहीं। यह त्रुटि के साथ शिकायत करेंगेInvalid group

इस विशिष्ट समस्या को हल करने के अलावा, मैं विजुअल स्टूडियो कोड में रेगेक्स के स्वाद के बारे में जानकारी ढूंढ रहा हूं और इसके बारे में दस्तावेज़ीकरण कहां पाया जा सकता है, इसलिए मैं अपने आप को किसी भी अन्य प्रश्न के साथ मदद कर सकता हूं जिस पर मैं ठोकर खा सकता हूं।

पूर्ण विज़ुअल स्टूडियो यहां दस्तावेज़ के रूप में .NET रेगुलर एक्सप्रेशन का उपयोग करता है । इस लिंक को Stackoverflow पर VS कोड के लिए कहीं और प्रलेखन के रूप में उल्लेख किया गया है, लेकिन यह नहीं है।


VSCode जावास्क्रिप्ट-आधारित रेगेक्स इंजन का उपयोग कर रहा है, लेकिन यह समान नहीं है। आप वहां कैप्चरिंग समूहों के नाम का उपयोग नहीं कर सकते।
विकटोरिया स्ट्रीब्यूव

1
VSCode में उपयोग किए गए रेगेक्स पर कोई विशिष्ट दस्तावेज नहीं है। हालाँकि, यदि आपके पास सोर्स कोड पर एक नज़र है, तो आपको बहुत सारे JS कोड दिखाई देंगे। यदि आप लुकबाइंड का उपयोग करने का प्रयास करते हैं, तो आपको अमान्य पैटर्न त्रुटि मिलती है, जबकि लुकहैड काम करते हैं। और जेएस रेगेक्स स्वाद एकमात्र रेगेक्स इंजन है जो [^]पैटर्न को किसी भी प्रतीक से मेल खाता है। तो, यह स्पष्ट है कि यह जेएस रेगेक्स इंजन है।
विकिटोर स्ट्रीब्यू


1
ठीक है। यदि आप निश्चित हैं और आपके पास डॉक्स के कुछ लिंक हैं तो आप जवाब दे सकते हैं। मैं उत्थान करूंगा। अगर यह केवल एक ही है तो ECMAScript युक्ति एक बढ़िया लिंक नहीं है।
एरिक

1
तो, आप किस तरह के उत्तर की उम्मीद करते हैं? जेएस रेगेक्स सिंटैक्स विवरण के लिए मैंने + के ऊपर जो कुछ भी पोस्ट किया है? एमडीएन संदर्भ की तरह ?
विकटोरिया स्ट्राइब्यू

जवाबों:


170

फाइल्स साइडबार में फाइंड / रिप्लेस में रस्ट रेगेक्स

MSFT के रॉब लूर्न्स ने लिखा है कि फ़ाइल खोज रुस्ट रेगेक्स का उपयोग करता है। जंग भाषा प्रलेखन वाक्य रचना का वर्णन है।

GitHub पर रोब लोरेंस

फ़ाइल विजेट में ढूँढें / बदलें में जावास्क्रिप्ट रेगेक्स

MSFT के अलेक्जेंड्रू डिमा ने लिखा है कि खोज विजेट जावास्क्रिप्ट regex का उपयोग करता है। जैसा कि Wicktor ने टिप्पणी की है, ECMAScript 5 के दस्तावेज में वाक्य रचना का वर्णन है। तो MDN जावास्क्रिप्ट नियमित अभिव्यक्ति गाइड करता है

गीथहब पर अलेक्जेंड्रू डिमा

अंतर का परीक्षण करें

फ़ाइल साइडबार में खोज का समर्थन नहीं करता है, (?=foobar)जबकि फ़ाइल विजेट में खोज लुकहेड सिंटैक्स का समर्थन करता है।

विजेट में काम करने वाला लुकहेड दिखाता है लेकिन साइडबार में नहीं।

समूहों के साथ खोजें / बदलें के बारे में

लगता है / समूहों, उपयोग कोष्ठकों के साथ प्रतिस्थापित करने के लिए ()समूह के लिए और $1, $2, $3,$n को बदलने के लिए।

यहाँ एक उदाहरण है।

इससे पहले:

यह पाठ से पहले की जगह है।

उपरांत:

यह पाठ की जगह के बाद है।


12

शॉन का उत्तर अभी भी सही है, हालांकि एक अद्यतन जोड़ने के लिए, हाल ही में वीएस कोड ने पर्ल आधारित पीसीआर 2 इंजन का उपयोग करने का विकल्प जोड़ा । आप इसे अपनी सेटिंग्स कॉन्फिग के माध्यम से सक्षम कर सकते हैं।

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

वीएस कोड नियमित अभिव्यक्ति खोजों का समर्थन करता है, हालांकि, बैकरेफरेंस और लुकअराउंड डिफ़ॉल्ट रूप से समर्थित नहीं हैं। लेकिन आप सेटिंग search.usePCRE2 से इन्हें सक्षम कर सकते हैं । यह PCRE2 regex इंजन का उपयोग करने के लिए ripgrep को कॉन्फ़िगर करता है। जबकि PCRE2 कई अन्य विशेषताओं का समर्थन करता है, हम केवल regex अभिव्यक्तियों का समर्थन करते हैं जो अभी भी जावास्क्रिप्ट में मान्य हैं , क्योंकि खुले संपादकों को अभी भी संपादक की जावास्क्रिप्ट-आधारित खोज का उपयोग करके खोजा जाता है।

और एक बोनस के लिए यदि आप मल्टी लाइन सर्च करने की कोशिश कर रहे हैं, तो वीएस कोड ने हाल ही में उस फीचर को भी जोड़ा है !

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


PCRE2 को सेटिंग मेनू में सक्रिय किया जा सकता है। वरीयताएँ पर जाएँ ~ सेटिंग्स और 'regex' के लिए खोजें
डग आरआर

ऐसा लगता है कि सेटिंग को हटा दिया गया है , और डिफ़ॉल्ट इंजन किसी सुविधा का समर्थन नहीं करता है, तो PCRE2 स्वचालित रूप से फ़ॉलबैक के रूप में उपयोग किया जाता है।
केविन राक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.