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

Java如何使用正则表达式提取字符串指定位置的目标内容

Java 提取文件名指定字段实现方案

针对从固定格式sbm文件名中提取one/two/three字段的需求,以下是两种可直接运行的实现方式,优先满足正则匹配的要求:

方法1:正则捕获组实现(推荐,带格式校验能力)

核心逻辑是根据文件名的固定结构编写正则规则,用小括号包裹需要提取的目标位置内容作为捕获组,匹配成功后直接读取捕获组内容即可。

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

public class ExtractField {
    public static void main(String[] args) {
        String[] fileList = {
                "choryangStn_110_220114_one_0.sbm",
                "choryangStn_110_220114_two_0.sbm",
                "choryangStn_110_220114_three_0.sbm"
        };
        // 正则规则:匹配完整文件名结构,捕获第三个和第四个下划线之间的英文内容
        Pattern fileNamePattern = Pattern.compile("^.*_\\d+_\\d+_([a-z]+)_\\d+\\.sbm$");

        for (String fileName : fileList) {
            Matcher matcher = fileNamePattern.matcher(fileName);
            if (matcher.matches()) {
                // group(0)是整个匹配到的字符串,group(1)是第一个捕获组的内容
                String target = matcher.group(1);
                System.out.println(target);
            }
        }
    }
}

正则规则说明:

  • ^ 标记字符串起始位置,$标记字符串结束位置,避免匹配到不符合完整格式的内容
  • .*_\\d+_\\d+_ 匹配目标字段前的前缀、两段数字编号(对应示例中的110、220114)和连接下划线
  • ([a-z]+) 是捕获组,匹配连续英文字符,也就是要提取的目标字段
  • _\\d+\\.sbm 匹配目标字段后的下划线、数字序号、.sbm后缀,注意.是正则特殊字符,需要加反斜杠转义

运行上述代码会依次输出one、two、three,符合需求。

方法2:字符串分割实现(格式固定时写法更简洁)

如果文件名始终以下划线作为分隔符、字段位置完全固定,也可以直接去掉后缀后按下划线分割,按下标取对应位置内容即可,不需要写正则:

public class ExtractField {
    public static void main(String[] args) {
        String[] fileList = {
                "choryangStn_110_220114_one_0.sbm",
                "choryangStn_110_220114_two_0.sbm",
                "choryangStn_110_220114_three_0.sbm"
        };
        for (String fileName : fileList) {
            // 移除后缀后按下划线分割
            String[] splitParts = fileName.replace(".sbm", "").split("_");
            // 目标字段在分割结果的第4位,下标从0开始所以取索引3
            String target = splitParts[3];
            System.out.println(target);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:01:14