2016-04-23 45 views
0

我寫了下面的代碼Ø從我的文字刪除所有的#標籤的話:正則表達式不喜歡了#

public static void main(String[] args) { 

    System.out 
      .println(removeHashtag("Got an infection in my eye. Pharmacist thinks something bitten me. This wouldn't have happened under Simeone. Wenger a#sarcasm #wengerin")); 

} 

public static String removeHashtag(String commentstr) { 
    String arrWord[] = commentstr.split(" "); 
    String sentenceWithoutHash = commentstr; 
    System.out.println(sentenceWithoutHash); 
    for (int i = 0; i < arrWord.length; i++) { 
     if (arrWord[i].contains("#")) { 
      String regex = "\\s*\\" + arrWord[i] + "\\b\\s*"; 
      sentenceWithoutHash = sentenceWithoutHash.replaceAll(regex, ""); 
     } 
    } 
    return sentenceWithoutHash; 
} 

但是這個代碼不王氏本文

Got an infection in my eye. Pharmacist thinks something bitten me. This wouldn't have happened under Simeone. Wenger out#sarcasm #wengerin" 

工作似乎正則表達式不喜歡出#

任何人都可以幫忙嗎?

+0

@anubhava text without anyword contains hashtag –

+0

so full'out#sarcasm' should be removed? – anubhava

+0

@anubhava是的,它應該 –

回答

1

您可以使用此正則表達式刪除包含#任何一句話:

String rep = str.replaceAll("\\s*\\w*#\\w*\\s*", ""); 

RegEx Demo

1

這將工作按你的條件

((?:[^\s]+)?#[^\s]+) 

Regex Demo

String x = str.replaceAll("((?:[^\\s]+)?#[^\\s]+)", "")