【问题标题】:Can someone help me with writing a regular expression?有人可以帮我写一个正则表达式吗?
【发布时间】:2014-03-28 23:08:04
【问题描述】:

我正在为我的应用创建搜索功能,我需要一个好的正则表达式。现在,当用户搜索“RAC”(这是一个乐队名称)时,它会返回我所有标题中带有字母“rac”的帖子。但是,这有点损坏,只能通过正则表达式来修复。我将提供一些示例并说明是否应将它们包括在内。

  1. Sly 先生 - 奇迹:不包括
  2. RAC - 放手:包括
  3. Amtrac - Walkin':不包括
  4. 巴士底狱 - 劳拉·帕尔默(RAC 混音):包括
  5. 冷战儿童 - 奇迹一英里:不包括
  6. MNDR - 喂我钻石(英尺 RAC):包括

有没有人有一个好的正则表达式可以帮助我?附言你可以测试你的正则表达式here

【问题讨论】:

  • 为什么这被标记为 Java 和 JavaScript?您实际使用的是哪种语言?

标签: java javascript android html regex


【解决方案1】:

编辑:这是 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

【讨论】:

    【解决方案2】:

    有许多工具可以帮助您,而不是自行解决问题。你考虑过Lucene

    【讨论】:

      【解决方案3】:

      类似的解决方案...但更高效
      为了避免分配无用的对象

      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);
      }
      

      【讨论】:

      • 这比 Mena 的答案大大低于效率,而不是更有效。
      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多