2011-01-27 12 views
10

काम नहीं कर रहा है मैं नीचे प्रोग्राम का उपयोग कर रेगेक्स का उपयोग कर स्ट्रिंग में कुछ शब्दों को हटाने की कोशिश कर रहा हूं। यह ठीक से हटा रहा है लेकिन यह केवल मामले संवेदनशील पर विचार कर रहा है। असंवेदनशील मामले के रूप में इसे कैसे बनाया जाए। मैंने replaceAll विधि में रखा लेकिन यह काम नहीं किया।जावा रेगेक्स केस असंवेदनशीलता

package com.test.java; 

public class RemoveWords { 

    public static void main(String args[]) 
    { 

     // assign some words to string 

     String sample ="what Is the latest news today in Europe? is there any thing special or everything is common."; 

      System.out.print(sample.replaceAll("(is | the |in | any)(?i)"," ")); 
    } 
} 

उत्पादन:

what Is latest news today Europe? there thing special or everything common. 

उत्तर

32

आप (?i) से पहले पैटर्न का हिस्सा है कि आप केस संवेदी बनाना चाहते रखने की आवश्यकता होगी आसपास

System.out.print(sample.replaceAll("(?i)\\b(?:is|the|in|any)\\b"," ")); 
            ^^^^ 

See it

मैं बदल दिया है रिक्त स्थान शब्द सीमा के साथ हटाए जाने वाले कीवर्ड (\\b)। समस्या आती है क्योंकि दो कीवर्ड एक दूसरे के बाद एक स्थान से अलग हो सकते हैं।

आप केवल अगर वे अंतरिक्ष से घिरे रहे हैं कीवर्ड हटाना चाहते हैं, तो आप सकारात्मक अग्रदर्शी और के रूप में lookbehind उपयोग कर सकते हैं:

(?i)(?<=)(is|the|in|any)(?=) 

See it

+0

में झंडे का उपयोग कैसे करें। अब यह काम कर रहा है – JavaGeek

+0

"" आउटपुट में मौजूद है। यह "" के साथ प्रतिस्थापित नहीं हुआ और यह "आईएस" को नहीं हटाता है http://www.ideone.com/HMxLr –

+0

सही। यह "" "को" "के साथ क्यों नहीं बदल रहा है। रेगेक्स – JavaGeek

1

परिवर्तन is[iI][sS]

sample.replaceAll("([iI][sS] ... 
+0

यह लेकिन लंबी प्रक्रिया है, जहां हम की जरूरत है काम करता है हर चरित्र को रखने के लिए। क्या कोई बेहतर तरीका – JavaGeek

+0

है, मैं यह नहीं कर सकता। मुझे लगता है कि @ साइबरनेट उत्तर –

3

लिए मुझे नहीं लगता कि आप मामले त्वरित साथ असंवेदनशील की जगह निर्दिष्ट कर सकते हैं करते हैं। इसके बजाए एक पैटर्न आज़माएं। अर्थात्:

package com.test.java; 

public class RemoveWords { 

public static void main(String args[]) { 
    // assaign some words to string 
    String sample ="what Is the latest news today in Europe? is there any thing special or everything is common."; 
    String regex = "(is | the |in | any)" 
    System.out.print 
    (
    Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(sample).replaceAll("") 
); 
} 
} 
+0

+1 सही दिखता है। regex –

+1

के साथ संघर्ष न करने के लिए डाउनवोट के लिए खेद है, लेकिन @codaddicts उत्तर दिखाता है, आप * उन स्ट्रैग का उपयोग 'String.replaceAll()' में कर सकते हैं। –

+0

@ जोचिम: कोई चिंता नहीं। मैंने @Codaddicts उत्तर को उखाड़ फेंक दिया क्योंकि मुझे पता चला कि String.replaceAll – Chandu

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