我尝试使用带有负向前瞻和群组的正则表达式。不幸的是它没有按预期工作,所以我需要帮助。
我需要解析字符串末尾的大小(英寸),这可以是Tony Hawk 39.75"' - > 39.75"或长度为x宽度的托尼霍克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'
任何提示我做错了什么?
答案 0 :(得分:1)
使用模式:
(.+?)\\s(\\d+\\.\\d*\".*)
可能会产生更好的结果:
2
Tony Hawk
39.75" x 8.75"
示例: