बच नहीं क्या बच गए करने के लिए नहीं की जरूरत है:
return expression.matches("[-+*/^]+");
ठीक काम करना चाहिए। अधिकांश रेगेक्स मेटाएक्टैक्टर्स (.
, (
, )
, +
, *
, आदि) चरित्र वर्ग में उपयोग किए जाने पर उनका विशेष अर्थ खो देते हैं। जिन पर आपको ध्यान देना होगा [
, -
, ^
, और ]
। और पिछले तीन के लिए, आप रणनीतिक उन में वर्ण वर्ग जगह है ताकि वे अपने विशेष अर्थ नहीं लेते हैं कर सकते हैं:
^
सही प्रारंभ कोष्ठक के बाद छोड़कर कहीं भी रखा जा सकता है: [a^]
-
रखा जा सकता है सही प्रारंभ कोष्ठक या सही बंद कोष्ठक से पहले के बाद: [-a]
या [a-]
]
सही प्रारंभ कोष्ठक के बाद रखा जा सकता है: []a]
लेकिन भविष्य में संदर्भ के लिए, यदि आप एक regex स्ट्रिंग में एक भागने चरित्र के रूप में एक बैकस्लैश शामिल करने की जरूरत है, आप इसे दो बार से बचने के लिए, उदाहरण के लिए की आवश्यकता होगी:
"\\(.*?\\)" // match something inside parentheses
तो एक शाब्दिक बैकस्लैश मिलान करने के लिए, आप ' घ जरूरत उनमें से चार:
"hello\\\\world" // this regex matches hello\world
एक और ध्यान दें: String.matches()
पैटर्न के खिलाफ पूरे स्ट्रिंग के मिलान, इसलिए जब तक आपके स्ट्रिंग बस ऑपरेटरों के एक समूह के होते हैं, आप की आवश्यकता होगी कोशिश करेंगेका उपयोग .matches(".*[-+*/^].*");
बजाय की तरह कुछ का उपयोग करें (या Matcher.find()
)
हां, मैं जा रहा था पागल सोच रहा से बचने के लिए की जरूरत है * जब समस्या आदेश + था - * लेने रेंज "प्लस तारांकन के माध्यम से" मतलब करने के बजाय " प्लस या माइनस या तारांकन "। यह स्पष्ट करने के लिए धन्यवाद! – WebChemist