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

Java正则提取URL斜杠间指定字符串的实现需求问询

用正则表达式提取URL中的目标关键词

没问题,我来帮你搞定这个需求!我们可以通过预编译正则表达式来高效提取/shirt/路径后的第一个有效关键词,完美适配你给出的所有测试用例。

实现思路

核心需求是:只有当URL以/shirt/开头时,提取后面第一个非斜杠、非查询参数的路径段。我们可以用正则表达式精准匹配这个规则,同时处理各种边界情况(比如空URL、/shirt、带查询参数的URL等)。

完整代码实现

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

public class URLKeywordExtractor {
    // 预编译正则表达式,避免重复编译提升性能
    private static final Pattern SHIRT_KEYWORD_PATTERN = Pattern.compile("^/shirt/([^/?]+)");

    public static String getRelativeWebappURL(String url) {
        // 处理空或null输入的边界情况
        if (url == null || url.isEmpty()) {
            return "";
        }

        Matcher matcher = SHIRT_KEYWORD_PATTERN.matcher(url);
        // 匹配成功则返回捕获的关键词,否则返回空字符串
        return matcher.find() ? matcher.group(1) : "";
    }

    public static void main(String[] args) {
        String testURLs[] = {"", "/" ,"/shirt", "/shirt/", "/shirt/abc", "/shirt/abc/", "/shirt/abc/xyz", "/shirt/abc?x=y", "/shirt/xyz/abc/pqr", "abc/something", "/abc/some", "abc/shirt/something"};
        for(String x : testURLs){
            System.out.println(x + " --> " + getRelativeWebappURL(x));
        }
    }
}

正则表达式详解

^/shirt/([^/?]+) 的含义拆解:

  • ^:匹配字符串的起始位置,确保/shirt/是URL路径的开头,避免匹配类似abc/shirt/something这种不符合要求的路径
  • /shirt/:精确匹配我们要定位的前缀路径
  • ([^/?]+):捕获组(这就是我们要提取的关键词),其中:
    • [^/?]:匹配**除了斜杠/(路径分隔符)和问号?(查询参数起始符)**之外的任意字符
    • +:要求至少匹配一个字符,确保我们提取的是有效的非空关键词

测试结果运行输出

运行上面的main方法,你会得到如下输出:

--> 
/ --> 
/shirt --> 
/shirt/ --> 
/shirt/abc --> abc
/shirt/abc/ --> abc
/shirt/abc/xyz --> abc
/shirt/abc?x=y --> abc
/shirt/xyz/abc/pqr --> xyz
abc/something --> 
/abc/some --> 
abc/shirt/something --> 

完全符合你的预期需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:38:12