2012-05-09 11 views
25

मैं एक नियमित अभिव्यक्ति लिखने की कोशिश कर रहा हूं जिसका उपयोग टेक्स्ट सामग्री पर 1 से 35 के बीच देखने के लिए किया जाएगा। यह वर्ण पाठ बॉक्स में कुछ भी हो सकता है:नियमित अभिव्यक्ति का उपयोग करके किसी भी चरित्र के लिए न्यूनतम/अधिकतम वर्ण गणना सेट करना

^[:;,\[email protected]âéè'.\s]{1,35}$ 

आप देख सकते हैं, मैं सभी पात्रों की सूची के लिए है: सांख्यिक, अल्फा, विराम चिह्न, सफेद स्थान, आदि यहाँ मैं अब तक है। क्या "सभी" वर्ण कहने का कोई आसान तरीका है?

उत्तर

36
इस तरह

: .

. न्यू लाइन को छोड़कर किसी भी चरित्र (जो कभी कभी है, लेकिन अक्सर शामिल नहीं है, अपने रेगुलर एक्सप्रेशन से स्वाद की जांच) का अर्थ है।

आप अपनी अभिव्यक्ति को ^.{1,35}$ के रूप में फिर से लिख सकते हैं, जो लंबाई 1-35 की किसी भी पंक्ति से मेल खाना चाहिए।

+2

कई regex इंजनों में, '.' है * नहीं * एक नई पंक्ति से मेल खाते हैं, लेकिन किसी अन्य चरित्र से मेल खाता है (जब तक आप का उपयोग इसे अन्यथा बताने के लिए ध्वज)। उस स्थिति में, आप '[\ s \ S] '(या तो एक स्पेस कैरेक्टर या नॉनस्पेस कैरेक्टर) जैसे कुछ कोशिश कर सकते हैं। –

+0

ओह, यह एक अच्छा मुद्दा है। मैंने न्यूलाइन पर बिल्कुल विचार नहीं किया। – mkjeldsen

+0

मैं 'echo "हैलो की उम्मीद करूंगा" | grep "^। {1,35} $" 'मिलान करने के लिए, लेकिन यह नहीं ... कोई विचार क्यों? – dokaspar

8

हां, . (डॉट) किसी भी चरित्र से मेल खाता है। का उपयोग करें:

^.{1,35}$ 
4

आप भी नई-पंक्तियों से मिलान करना चाहते हैं, तो आप (regex इंजन के आधार पर) "^[\s\S]{1,35}$" उपयोग करने के लिए चाहते हो सकता है। अन्यथा, जैसा कि अन्य ने कहा है, आपको "^.{1,35}$"

12

का उपयोग करना चाहिए आमतौर पर मेटाएक्टेक्टर . जब वर्ण वर्ग के अंदर नहीं होता है।

तो ^.{1,35}$ का उपयोग करें। हालांकि, डॉट में न्यूलाइन शामिल नहीं है जब तक कि डॉट-सभी संशोधक इसके खिलाफ लागू नहीं होता है।

आप किसी भी संशोधक के बिना ^[\S\s]{1,35}$ का उपयोग कर सकते हैं, और इसमें न्यूलाइन भी शामिल है। एक

4

आप मिन 1 गिनती और कोई अधिकतम लंबाई सेट करना चाहते हैं,

^.{1,}$ 
+2

'^। + $' इसके लिए आसान है। –

+0

हालांकि यह कुछ उपयोगकर्ताओं (मेरे साथ) के लिए उपयोगी है, लेकिन यह मूल प्रश्न का उत्तर नहीं देता है। – Melebius

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