2010-06-28 10 views
14

मेरे आवेदन में उपयोगकर्ता अपने स्वयं के रेगेक्स पैटर्न को टेक्स्ट बॉक्स में दर्ज कर सकता है ताकि वह किसी अन्य उपयोगकर्ता/टेक्स्ट बॉक्स के लिए एक निश्चित इनपुट को मजबूर कर सके। क्या उपयोगकर्ता के लिए एक स्ट्रिंग का एक उदाहरण देखना संभव है जो उसके द्वारा दर्ज किए गए रेगेक्स से मेल खाएगा? उदाहरण के लिए यदि वह दर्ज करना था: ^[A-Z]{2}$, यह उपयोगकर्ता को दिखाने के लिए "XX" जैसी स्ट्रिंग उत्पन्न करेगा, वह केवल दो पूंजी अक्षरों को दर्ज कर सकता है।क्या रेगेक्स पैटर्न के आधार पर एक उदाहरण स्ट्रिंग उत्पन्न करना संभव है?

यदि इसे पूरा करने का कोई आसान तरीका नहीं है (और मुझे लगता है कि नहीं है), तो निर्माण करना कितना मुश्किल होगा? या ऐसा कुछ पहले से मौजूद है?

+0

http://stackoverflow.com/questions/205411/random-string-that-matches-a-regexp देखें, यह आपकी मदद कर सकता है। – Shimrod

उत्तर

8

Xeger देखें। ऐसा लगता है कि यह वही कर सकता है जो आप चाहते हैं। हालांकि यह जावा में है।

यहाँ टेस्ट स्वीट से एक उदाहरण है:

@Test 
    public void shouldGenerateTextCorrectly() { 
     String regex = "[ab]{4,6}c"; 
     Xeger generator = new Xeger(regex); 
     for (int i = 0; i < 100; i++) { 
      String text = generator.generate(); 
      assertTrue(text.matches(regex)); 
     } 
    } 

अद्यतन: निकोस Baxevanis करने के लिए धन्यवाद, dk.brics.automaton सी # के लिए https://github.com/moodmosaic/Fare

+0

यह वही है जो मैं ढूंढ रहा हूं .. लेकिन सी # के लिए। कम से कम मेरे पास कुछ ऐसा है जो मैं संदर्भ के रूप में उपयोग कर सकता हूं। – Fusyion

+0

ज़ेगर http://www.brics.dk/~amoeller/automaton/ के आस-पास एक पतला आवरण है जो कुछ regexp संचालन के डीएफए/एनएफए कार्यान्वयन है। हो सकता है कि ऐसा कुछ ऐसा हो जो सी # के लिए उपलब्ध हो? –

+1

@ मार्टिनविकमैन हां, दोनों dk.brics.automaton और xeger स्रोतों को https://github.com/moodmosaic/Fare –

7

पर सी # वापस पोर्ट दिया गया है आप प्रोजेक्ट Fare पर भी देखना चाह सकते हैं। अधिक जानकारी के लिए this उत्तर पर एक नज़र डालें।

उदाहरण

var regex = @"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)"; 
var xeger = new Xeger(regex); 

var result = Regex.IsMatch(xeger.Generate(), regex); 
// -> Prints 'true' 
+0

निकोस पर सी # पर पोर्ट किया गया है, यदि आप फारे –

+0

का उपयोग करके कोड नमूना दिखाते हैं तो यह बहुत उपयोगी होगा। अल्बर्टो, मैंने अभी एक उदाहरण जोड़ा है। उम्मीद है की वो मदद करदे। –

0

मैं एक बार की जरूरत ऐसी बात भी, तो मैं एक साधारण प्रोग्राम जीयूआई के साथ xeger lib ऊपर उल्लेख किया है का उपयोग कर बनाया। बस .jar फ़ोल्डर से jjar चलाएं (jre आवश्यक है) https://github.com/ogyct/SampleFromRegex

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

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