请你帮我解决android中的以下字符串的正则表达式:
1.0.2 Build S6B5
应该如何:
{number}.{number}.{number}{space}Build{space}{S or D orT}{anything up 3 to 4 chars}
在这里的一些国王的帮助下,我尝试了流动的代码:
if (name.matches("\\d+\\.\\d+\\.\\d+\\s+Build\\s[SDT].{3,4}"));
但即使是:
也始终返回True1.0.1 4C0
1.0.1 B 4BD
1.0.4.52A
等
答案 0 :(得分:0)
public static void main (String[] args) {
String name1 = "1.0.1 4C0";
String name2 = "1.0.1 B 4BD";
String name3 = "1.0.4.52A";
String name4 = "1.0.2 Build S6B5";
check(name1);
check(name2);
check(name3);
check(name4);
}
private static void check(String name) {
Pattern p = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)\\s+Build\\s+([SDT]\\w{3,4})");
Matcher m = p.matcher(name);
if (m.find()) {
System.out.println("num1: " + m.group(1));
System.out.println("num2: " + m.group(2));
System.out.println("num3: " + m.group(3));
System.out.println("build: " + m.group(4));
} else {
System.out.println("not found");
}
}
使用Matcher.find()方法匹配部分测试字符串,然后使用Matcher.group()
方法访问圆括号捕获的部分。
结果输出:
not found
not found
not found
num1: 1
num2: 0
num3: 2
build: S6B5
答案 1 :(得分:-1)
尝试这一个: (\ d {1})。(\ d {1})。(\ d {1})\ S(生成)\ S([SDT])([\ W \ d] {3,4})
或
(\ d)的。(\ d)。(\ d)* \ S(生成)\ S([SDT])([\ W \ d] {3,4})如果你有多个号码。
在你的问题是正则表达式的结束:"。{3,4}"。这意味着你接受3到4次任意角色。