2013-07-20 9 views
8

मेरे पास '+' से शुरू होने वाले टेक्स्ट के सभी शब्दों से मेल खाने के लिए निम्न रेगेक्स है।रेगेक्स में बच निकले चरित्र को कैसे नजरअंदाज करें?

Pattern.compile("\\+[\\w-]+"); 

यह अच्छी तरह से काम करता है और "+Foo" और "+Bar" करने के लिए "+Foo or +Bar" मेल खाता है।

मैं बचने वाले '+' से शुरू होने वाले शब्दों को अनदेखा करने के लिए रेगेक्स कैसे बढ़ा सकता हूं?

"+Foo or +Bar but no \\+Hello""+Hello" को "+Foo" और "+Bar"लेकिन नहीं करने के लिए मेल खाना चाहिए।

किसी भी मदद के लिए अग्रिम में

धन्यवाद (यह JDK1.7 के लिए काम करना चाहिए।)!

उत्तर

13

आप एक negative lookbehind की कोशिश कर सकते।

+2

धन्यवाद। यह काम करता है! – t777

+0

@ t777 कोई समस्या नहीं, मदद करने में खुशी हुई। – arshajii

4

आप नकारात्मक लुक-पीछे उपयोग कर सकते हैं:

(?<!\\(\\{2})*)\+[\w-]+ 

सामान्य तौर पर, (?<!Y)X एक X कि एक Y से पहले नहीं किया गया है मेल खाता है:

Pattern.compile("(?<!\\\\)\\+[\\w-]+"); 
+1

धन्यवाद। लेकिन काम नहीं करता है। बहुत बैकस्लाश हो सकता है? ;) – t777

+0

@ t777। ठीक है, ठीक है। आपको बस 4 बैकस्लाश की आवश्यकता है। –

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