我尝试将正则表达式与负前瞻和组一起使用。不幸的是它没有按预期工作,所以我需要帮助。
我需要解析字符串末尾的尺寸(英寸),其格式可以是“Tony Hawk 39.75”--> 39.75“或长度 x 宽度“Tony Hawk 39.75”x 8.75“”-- > 9.75 英寸 x 8.75 英寸。问题是名称也可以包含数字,例如'AD-37 8.0"'。所以我尝试使用负向前看,'空格'不跟随'x'(?!.+\s[x]),但它带来了奇怪的结果。
Pattern regex = Pattern.compile("(?!.+\\s[x])\\s(\\d+\\.?\\d*\".*)");
String s = "Tony Hawk 39.75\" x 8.75\"";
// or String s = "AD-37 8.0\"";
Matcher m = regex.matcher(s);
if (m.find()) {
System.out.println(m.groupCount());
System.out.println(m.group(1));
System.out.println(m.group(2));
}
当我执行上面的示例时,它返回组 1 '8.75"',我不明白。这里我期望的是 'Tony Hawk'。
有什么提示我做错了什么吗?
使用模式:
(.+?)\\s(\\d+\\.\\d*\".*)
可能会产生更好的结果:
2
Tony Hawk
39.75" x 8.75"
示例: