/ / रूबी रेगेक्स: यूनिक्स फ़ाइल पथ को मान्य करें - रूबी, रेगेक्स

रूबी रेगेक्स: यूनिक्स फ़ाइल पथ को मान्य करें - रूबी, रेगेक्स

मैं regex का उपयोग कर यूनिक्स फ़ाइल पथ को मान्य करना चाहता हूं।

मेरे पास है A[0-9a-zA-Z_-/]+z

लेकिन यह अभी भी डबल स्लेश की तरह अनुमति देता है this//is//allowed

मैं कैसे सुनिश्चित करूं कि डबल स्लेश की अनुमति नहीं है?

1 संपादित करें

मैं _, -, अल्फान्यूमेरिक मानों को तब तक अनुमति देना चाहता हूं जब तक वे वैध यूनिक्स निर्देशिका पथ बनाते हैं। बस यह सुनिश्चित करना चाहते हैं // निषिद्ध है। धन्यवाद

उत्तर:

उत्तर № 1 के लिए 4

आपको चरित्र वर्ग के बाहर स्लैश को स्थानांतरित करना चाहिए, और इसे वैकल्पिक बनाना चाहिए। और फिर 1 या अधिक बार के लिए अपने संयोजन को दोहराने के लिए, चरित्र वर्ग और स्लैश संयुक्त पर क्वांटिफायर जोड़ें:

A(?:[0-9a-zA-Z_-]+/?)+z

पर देखें http://rubular.com/r/77kvWAoI4e

(?:
[0-9a-zA-Z_-]+   # Original character class without `/`.
/?                # An optional slash (Because the string need not end with `/`
)+                   # 1 or more repetition of their combination

और आपको भागने की जरूरत नहीं है _ रेगेक्स में और भी - जब चरित्र वर्ग के अंत में उपयोग किया जाता है।

और अंत में, आपकी चरित्र वर्ग को कम किया जा सकता है - [w-]। तो, आपके regex को कम किया जा सकता है:

A(?:[w-]+/?)+z

जवाब के लिए 0 № 2

लक्षित वर्ण को बार-बार दोहराए जाने के साथ निर्दिष्ट करें

//{2}/