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


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.