मैं 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}/