【问题标题】:regex for first character before space空格前第一个字符的正则表达式
【发布时间】:2016-02-15 05:58:45
【问题描述】:

我正在尝试使用下面的代码在 java 中使用正则表达式从下面的字符串中提取“d320” n-我们; micromax d320 build/kot49h)

    String m = "n-us; micromax d320 build/kot49h) ";
    String pattern = "micromax (.*)(\\d\\D)(.*) ";
    Pattern r = Pattern.compile(pattern);
    Matcher m1 = r.matcher(m);
    if (m1.find()) {
        System.out.println(m1.group(1));


    }

但它给我的输出是“d320 build/kot4”,我只想要 d320

【问题讨论】:

  • @TheLostMind 厌倦了过去 2 年一次又一次地发布相同的答案..
  • @TheLostMind 我要从我最喜欢的标签中删除正则表达式。
  • @AvinashRaj - (8000 万开发人员尖叫..).. Nooooooo。上帝啊,这到底是为什么? :P
  • @TheLostMind 许多新人愿意为这个标签做出贡献,例如Stribizhev、vks 等。所以让他们留一条路……别担心,主神 anubhava 仍然在这里观看所有正则表达式问题..
  • 现在,string.replaceFirst("\\bregex+or+string\\b", "django+or+google-app-engine", myfavtags);

标签: java regex


【解决方案1】:

尝试像这样使用micromax\\s(.*?)\\s

     String m = "n-us; micromax d320 build/kot49h) ";
    String pattern = "micromax\\s(.*?)\\s";
    Pattern r = Pattern.compile(pattern);
    Matcher m1 = r.matcher(m);
    if (m1.find()) {
        System.out.println(m1.group(1));

    }

输出:

  d320

【讨论】:

    【解决方案2】:

    不知道你想要“micromax”之后的单词,还是以字母开头并且后面都是数字的单词,所以这里有两种解决方案:

    提取“micromax”后面的单词:

    String code = m.replaceAll(".*micromax\\s+(\\w+)?.*", "$1");
    

    要提取看起来像“x9999”的单词:

    String code = m.replaceAll(".*?\b([a-z]\\d+)?\b.*", "$1");
    

    如果没有匹配,两个 sn-ps 都会产生一个空白字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 2014-06-10
      • 2011-03-29
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多