2010-12-10 11 views
14

मूल रूप से मेरे सवाल यह है, क्यों है:जावा की स्ट्रिंग.मैट्स विधि के लिए रेगेक्स?

String word = "unauthenticated"; 
word.matches("[a-z]"); 

झूठी लौटने? (जावा 1.6 में विकसित)

मूल रूप से मैं देखना चाहता हूं कि मेरे पास एक स्ट्रिंग पास है या नहीं, इसमें अल्फा वर्ण हैं।

उत्तर

22

String.matches() समारोह पूरे स्ट्रिंग के खिलाफ अपने नियमित अभिव्यक्ति से मेल खाता है (जैसे कि अपने रेगुलर एक्सप्रेशन से शुरू में ^ और $ अंत में था) है। यदि आप किसी स्ट्रिंग के भीतर कहीं भी नियमित अभिव्यक्ति खोजना चाहते हैं, तो Matcher.find() का उपयोग करें।

सही विधि क्या आप क्या करना चाहते पर निर्भर करता है:

  1. चेक करें कि क्या आपके इनपुट स्ट्रिंग होते पूरी तरह वर्णमाला वर्णों की ([a-z]+ साथ String.matches())
  2. चेक करें कि क्या आपके इनपुट स्ट्रिंग को देखने के लिए देखने के लिए शामिल किसी भी वर्णमाला चरित्र (और शायद कुछ अन्य) ([a-z] साथ Matcher.find())
4

आपका कोड यह देखने के लिए जांच रहा है कि शब्द एक वर्ण से मेल खाता है या नहीं। क्या आप जाँच करना चाहते हैं शब्द निम्नलिखित की तरह वर्णमाला वर्णों के किसी भी नंबर से मेल खाता है: एक चरित्र के लिए यदि आप गणित

word.matches("[a-z]+"); 
+0

मैंने कभी भी किसी भी उदाहरण में + प्रतीक नहीं देखा। कुछ कारणों से जावा ने मुझे पसंद नहीं किया, लेकिन + काम कर रहा है। धन्यवाद। – sMaN

+1

@ शुन, '+' का अर्थ है पिछले 1 या उससे अधिक तत्व। – jjnguy

+0

@ शॉन 83 - जावा/जावा रेगेक्स को '+' के बजाय '*' के साथ कोई समस्या नहीं होगी। हो सकता है कि आप इसे खो रहे हों ... :-) –

1

[a-z] साथ।

क्या आप शायद के लिए देख रहे [a-z]*

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