जावा नियमित अभिव्यक्ति या ऑपरेटर


87

यह एक गूंगा प्रश्न हो सकता है, लेकिन मुझे यह कहीं भी नहीं मिला:

मैं बिना कोष्ठक के जावा या नियमित अभिव्यक्ति ऑपरेटर (!) का उपयोग कैसे कर सकता हूं?

जैसे: दूरभाष | फोन | फैक्स |


ठीक है, आपको क्या समस्या है?
— डेनबैन

1
हाँ, काम करना चाहिए। cletus, danben, और स्वयं सहमत हैं। भी, @danben - मेरा नाम डैन बीम है, योग्य, इतना करीब!
— डैन बीम

जवाबों:


154

आप बस अपने दम पर पाइप का उपयोग कर सकते हैं:

"string1|string2"

उदाहरण के लिए:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|string2", "blah"));

आउटपुट:

blah, blah, string3

कोष्ठक का उपयोग करने का मुख्य कारण विकल्पों के दायरे को सीमित करना है:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(1|2)", "blah"));

एक ही आउटपुट है। लेकिन अगर आप ऐसा करते हैं:

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string1|2", "blah"));

आपको मिला:

blah, stringblah, string3

क्योंकि आपने "string1" या "2" कहा है।

यदि आप अभिव्यक्ति के उपयोग के उस हिस्से पर कब्जा नहीं करना चाहते हैं ?::

String s = "string1, string2, string3";
System.out.println(s.replaceAll("string(?:1|2)", "blah"));

क्या होगा अगर मुझे इन स्ट्रिंग्स को रेगेक्स के अन्य टुकड़ों से भी अलग करने की आवश्यकता है जो कि तार भी हैं? जैसे eee (ff | gg) eee क्या मुझे कोष्ठक का उपयोग करना है?
— एरिक कॉनर

आह बुरा न मानें। आपका अपडेट इसे ठीक करता है। आखिरी उदाहरण वह है जिसकी मुझे तलाश थी। धन्यवाद!
— एरिक कोनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.