2014-02-26 45 views
-1

我正在爲我的應用程序進行搜索功能,我需要一個良好的正則表達式。此時,當用戶搜索「RAC」(它是樂隊名稱)時,它會返回標題中包含字母「rac」的所有帖子。然而,這有點破,只能通過正則表達式來修復。我會提供一些例子,並說明是否應該包括它們。有人可以幫我寫一個正則表達式嗎?

  1. 狡猾的爵士 - 奇蹟:不包括
  2. RAC - 放手:包含
  3. 兩棲戰車 - 沃爾:不包括
  4. 巴士底獄 - 勞拉 - 帕爾默(RAC混音):包含
  5. 冷戰孩子 - Miracle Mile的:不包括
  6. 馬曼德 - 餵我Diamons(英尺RAC):包含

有沒有人有一個好的正則表達式可以幫助我?附:你可以測試你的正則表達式here

+0

這是爲什麼標籤Java和JavaScript?你實際使用哪種語言? – Boann

回答

3

編輯:這是一個Java的解決方案 - 如果不是預期的語言,請完善你的標籤

你可以使用這個詞邊界,區分大小寫Pattern,因爲這樣的:

String[] inputs = {"Sir Sly - Miracle",// : DON'T INCLUDE 
     "RAC - Let Go",// : INCLUDE 
     "Amtrac - Walkin'",// : DON'T INCLUDE 
     "Bastille - Laura Palmer (RAC Remix)",// : INCLUDE 
     "Cold War Kids - Miracle Mile",// : DON'T INCLUDE 
     "MNDR - Feed Me Diamons (ft. RAC)"// : INCLUDE 
     }; 
Pattern p = Pattern.compile("\\bRAC\\b"); 
for (String input: inputs) { 
    Matcher m = p.matcher(input); 
    System.out.printf("%s --> found ? %b%n", input, m.find()); 
} 

輸出

Sir Sly - Miracle --> found ? false 
RAC - Let Go --> found ? true 
Amtrac - Walkin' --> found ? false 
Bastille - Laura Palmer (RAC Remix) --> found ? true 
Cold War Kids - Miracle Mile --> found ? false 
MNDR - Feed Me Diamons (ft. RAC) --> found ? true 
0

有許多工具它可以幫助你而不是滾動你自己的解決方案。你有沒有考慮Lucene

-1

類似的解決方案......但爲了更有效
避免分配無用之物

String[] bands = {"Sir Sly - Miracle",// : DON'T INCLUDE 
        "RAC - Let Go",// : INCLUDE 
        "Amtrac - Walkin'",// : DON'T INCLUDE 
        "Bastille - Laura Palmer (RAC Remix)",// : INCLUDE 
        "Cold War Kids - Miracle Mile",// : DON'T INCLUDE 
        "MNDR - Feed Me Diamons (ft. RAC)",// : INCLUDE 
}; 

for(String s : bands){ 
    if(Pattern.matches(".*(RAC).*", s)) 
      System.out.printf("%s\n",s); 
} 
+0

這比Mena的答案效率低得多,效率也不高。 – Boann

相關問題