39.75"或长 x-6ren">
gpt4 book ai didi

java - 带组的正则表达式负前瞻

转载 作者:行者123 更新时间:2023-11-30 11:00:11 25 4
gpt4 key购买 nike

我尝试将正则表达式与负前瞻和组一起使用。不幸的是,它没有按预期工作,所以我需要帮助。

我需要解析字符串末尾的尺寸(英寸),格式可以是 '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"

例子:

https://regex101.com/r/pN0fW1/1

关于java - 带组的正则表达式负前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com