我想提取" 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
答案 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");
如果没有匹配,两个片段都会产生空白字符串。