2010-07-28 7 views
6

मुझे पता था कि हमारे पास नियमित अभिव्यक्ति वाक्यविन्यास दुनिया में ऐसा कुछ है।कैसे खोजें {min, max} विजुअल स्टूडियो या एसएसएमएस में नियमित अभिव्यक्ति पैटर्न दोहराता है "ढूंढें और बदलें"?

* वाक्यविन्यास {min, max} है, जहां न्यूनतम एक सकारात्मक पूर्णांक संख्या है जो न्यूनतम संख्या में मैचों का संकेत देती है, और अधिकतम अधिकतम पूर्णांक का संकेत देने वाले न्यूनतम से अधिक या न्यूनतम से अधिक है।

तो {0,} , और रूप में ही है {1,} +

http://www.regular-expressions.info/repeat.html


लेकिन मैं कैसे एसक्यूएल सर्वर प्रबंधन स्टूडियो में उपयोग कर सकते हैं या के रूप में ही है दृश्य स्टूडियो "ढूंढें और बदलें" विंडो। मुझे केवल MSDN में संबंधित माइक्रोसॉफ्ट सिंटैक्स मिल गया है। पसंद:

[0-9]^4 किसी भी 4 अंकों के अनुक्रम से मेल खाता है।

उत्तर

10

विजुअल स्टूडियो रीगेक्स कार्यान्वयन (वीएस 2010 तक संस्करणों में) कम से कम कहने के लिए एक काफी गैर मानक है, और इसमें यह सुविधा नहीं है। आप केवल यह उल्लेख कर सकते हैं:

* या @: मिलान बिल्कुल n: एक या पूर्ववर्ती अभिव्यक्ति की अधिक

^n मैच: शून्य या पूर्ववर्ती अभिव्यक्ति की अधिक

+ या # मैच पिछली अभिव्यक्ति की पुनरावृत्ति

तो A{2,4} के लिए आपको A^4|A^3|A^2 का उपयोग करना होगा (पॉलीजेनुब्रिकेंट की टिप्पणी के लिए देखें स्पष्टीकरण क्यों आपको इसे अवरोही क्रम में करने की आवश्यकता है)।

वीएस के हाल के संस्करण .NET regexes के पूरे सेट का समर्थन करते हैं।

+1

'ए^2 | ए^3 | ए^4 'अनिच्छुक है,' ए^4 | ए^3 | ए^2' लालची संस्करण के लिए। – polygenelubricants

+0

@ पोलिजेनेलब्रिकेंट्स: दिलचस्प, जानकारी के लिए धन्यवाद। मैं अभी घर पर नहीं हूं और अभी तक यह जांच नहीं पाया। मैं क्या सोच रहा था: प्रलेखन में "शून्य या एक" क्वांटिफायर ('?') का उल्लेख नहीं है - क्या यह अस्तित्व में नहीं है? –

+1

(+1): मुझे विजुअल स्टूडियो रेगेक्स कार्यान्वयन के बारे में कुछ नहीं पता है, लेकिन (यह माना जाता है कि यह वह जगह है जहां आप जा रहे हैं), 'ए {2,4} '' एएए? ए?' के बराबर है। यद्यपि विनाशकारी बैकट्रैकिंग के साथ समस्या हो सकती है। यदि संभव हो तो, '' 'परमाणु/स्वामित्व होना चाहिए। लालच के लिए, ऐसा इसलिए है क्योंकि '{2,4}' पहले संभव होने पर 4 लेने का प्रयास करेगा, फिर यदि नहीं, तो 3 नहीं, तो उस क्रम में 2 नहीं। इसलिए 'ए^4 | ए^3 | ए^2'। अगर यह '{2,4} था? तो यह' ए^2 | ए^3 | ए^4' के बराबर है। अंतर दिखाता है कि वास्तव में 3 ए हैं। लालची सभी 3 से मेल खाएगी, अनिच्छुक केवल 2 को 1 बेजोड़ छोड़ देगा। – polygenelubricants

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