You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Java正则匹配二维尺寸、排除更高维度并捕获两组数值

符合需求的正则表达式

直接校验用的正则为:
^.*?([\d.,]+)\s*[xX]\s*([\d.,]+)(?!.*[xX]).*$

在Java代码中使用时需要对反斜杠转义,写法为:
"^.*?([\\d.,]+)\\s*[xX]\\s*([\\d.,]+)(?!.*[xX]).*$"


规则说明

  • 两个捕获组([\d.,]+)分别提取前后两个维度的数值,支持带小数点、千分位逗号的数字格式
  • \s*[xX]\s*匹配大小写的x,允许x前后存在任意空白字符
  • 核心限制通过否定前瞻(?!.*[xX])实现:匹配到第二个数值后,校验后续内容不存在任何x/X,直接排除三维及以上的多维度尺寸
  • 前后的.*?和.*兼容尺寸前后存在其他描述文本的场景

Java代码使用示例

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DimensionMatcher {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("^.*?([\\d.,]+)\\s*[xX]\\s*([\\d.,]+)(?!.*[xX]).*$");
        // 测试用例
        String[] testArr = {
            "S (26 in x 30 in)",
            "20 x 40",
            "Standard Size (10 x 40)",
            "20 x 40 x 80",
            "M (26 in x 30 in x 50 in)"
        };
        for (String content : testArr) {
            Matcher matcher = pattern.matcher(content);
            if (matcher.matches()) {
                System.out.println("内容:" + content + " 匹配成功");
                System.out.println("第一维度值:" + matcher.group(1));
                System.out.println("第二维度值:" + matcher.group(2));
            } else {
                System.out.println("内容:" + content + " 不匹配");
            }
            System.out.println("====================");
        }
    }
}

内容的提问来源于stack exchange,提问作者Jesus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:30:02