2012-02-16 12 views
70

तो जावा में रेगेक्स के साथ, मैं एक रेगेक्स लिखना चाहता हूं जो केवल तभी मेल खाएगा जब पैटर्न कुछ वर्णों से पहले न हो। उदाहरण के लिए:किसी चीज़ से मिलान करने के लिए regex अगर यह किसी और चीज से पहले नहीं है

String s = "foobar barbar beachbar crowbar bar "; 

यदि मैं बार से पहले नहीं है तो मैं मिलान करना चाहता हूं। तो आउटपुट होगा:

barbar 
beachbar 
crowbar 
bar 

मुझे पता है कि यह शायद एक बहुत ही सरल सवाल है। मैं रेगेक्स सीखने की कोशिश कर रहा हूं, लेकिन इस बीच मुझे अब काम करने की ज़रूरत है।

+2

आपका प्रश्न बिल्कुल स्पष्ट नहीं है। अगर आप अपनी पूरी स्ट्रिंग या स्पेस द्वारा अलग किए गए प्रत्येक शब्द से मेल खाना चाहते हैं तो कुछ charachters से पहले नहीं है? –

उत्तर

125

आप negative lookbehind इस तरह उपयोग करना चाहते हैं:

\w*(?<!foo)bar 

कहाँ (?<!x) का अर्थ है "इस बिंदु से पहले" x "केवल अगर यह नहीं है"।

अधिक जानकारी के लिए Regular Expressions - Lookaround देखें।

संपादित करें: \w* को पहले वर्णों को कैप्चर करने के लिए जोड़ा गया (उदा। "समुद्र तट")।

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