空格前第一个字符的正则表达式

时间:2016-02-15 05:58:45

标签: java regex

我想提取" d320"使用下面的代码在java中使用regex从下面的字符串 正美; 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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不知道你是否想要在" micromax"之后的单词,或者以字母开头且后面都包含所有数字的单词,所以这里有两个解决方案:

提取" micromax":

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

提取看起来像" x9999":

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

如果没有匹配,两个片段都会产生空白字符串。