2012-03-19 15 views
14

मैं किसी भी वर्ण (नियमित, अंक और विशेष) को छोड़कर स्ट्रिंग सत्यापन लिखने की कोशिश कर रहा हूं =। पैटर्न के साथ यह इनपुट स्ट्रिंग ": 23 12,5 = 2009-09/09 12" से मेल खाता है,किसी भी चरित्र से मेल खाने के लिए regex का उपयोग =

String patternString = "[[^=][\\w\\s\\W]]*"; 
    Pattern p = Pattern.compile(patternString); 
    Matcher m = p.matcher(str); 

    if(m.matches()) 
     System.out.println("matches"); 
    else 
     System.out.println("does not"); 

लेकिन -

यहाँ मैं क्या लिखा है।

पैटर्न स्ट्रिंग से मैं = (या उस मामले के लिए कोई अन्य चरित्र) कैसे निकाल सकता हूं?

+0

आप क्या मिलान करने की कोशिश कर रहे हैं? (या नहीं)? बस [^ =] * कुछ भी मिलान करेगा लेकिन '=' char। –

+1

आप चरित्र वर्गों घोंसला नहीं कर सकते हैं। '[[] 'बस एक वर्ण वर्ग है जिसमें एकल वर्ण' ['। – tripleee

उत्तर

30

यदि केवल प्रतिबंधित चरित्र बराबर चिह्न है, तो [^=]* जैसे कुछ काम करना चाहिए।

[^...] एक अस्वीकृत चरित्र वर्ग है; यह एक एकल चरित्र से मेल खाता है जो स्क्वायर ब्रैकेट के बीच सूची में से किसी एक को छोड़कर कोई चरित्र है। * अभिव्यक्ति शून्य या अधिक बार दोहराता है।

4

यदि आप केवल "=" के अवसर की जांच करना चाहते हैं तो आप स्ट्रिंग इंडेक्सऑफ() विधि का उपयोग क्यों नहीं करते?

if str.indexOf('=') //... 
+6

'युक्त' छोटा, समझने में आसान है, और आपको सूचकांक के साथ चारों ओर झुकाव की आवश्यकता नहीं है। – phihag

7

सबसे पहले, आपको regexp की आवश्यकता नहीं है। सीधे शब्दों में contains फोन:

if(str.contains("=")) 
    System.out.println("does not"); 
else 
    System.out.println("matches"); 

सही regexp आप देख रहे हैं सिर्फ

String patternString = "[^=]*"; 
1

अपने लक्ष्य को अपने स्ट्रिंग में किसी भी = वर्ण नहीं करने के लिए है, तो निम्न

String patternString = "[^=]*"; 
प्रयास करें
संबंधित मुद्दे