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

如何使用Java正则表达式提取日志cwd与name值拼接为带/的完整路径

Java 日志路径提取拼接实现方案

你的现有正则存在两个适配问题:

  • \S*只能匹配无空白字符的内容,无法适配包含空格的合法路径
  • 要求两个双引号包裹的内容连续出现,和你给出的分两行的日志格式不匹配

具体实现方案

正则说明

我们使用[^"]+匹配双引号内的内容,可以兼容含空格的路径,同时根据读取日志的方式分为两种实现:

场景1:一次性读取包含CWD、PATH两行的完整日志段

直接用一个正则匹配两个目标值:
正则表达式:cwd="([^"]+)"[\s\S]*?name="([^"]+)"

  • 分组1:对应cwd的实际值,自动去掉外层双引号
  • 分组2:对应name的实际值,自动去掉外层双引号

Java代码示例:

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

public class LogPathParser {
    public static void main(String[] args) {
        // 示例日志内容
        String log = "type=CWD test cwd=\"/home/user/app\" other content\n" +
                    "type=PATH test name=\"config/application.yml\" other content";
        
        Pattern pattern = Pattern.compile("cwd=\"([^\"]+)\"[\\s\\S]*?name=\"([^\"]+)\"");
        Matcher matcher = pattern.matcher(log);
        
        if (matcher.find()) {
            // 直接拼接两个分组的结果
            String fullPath = matcher.group(1) + "/" + matcher.group(2);
            System.out.println(fullPath);
            // 输出:/home/user/app/config/application.yml
        }
    }
}

场景2:逐行读取日志流

如果是逐行监控实时日志,就分别匹配两行存值再拼接:

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

public class RealtimeLogParser {
    private static final Pattern CWD_PATTERN = Pattern.compile("cwd=\"([^\"]+)\"");
    private static final Pattern NAME_PATTERN = Pattern.compile("name=\"([^\"]+)\"");
    
    public static void main(String[] args) {
        // 模拟逐行读取的日志行
        String line1 = "type=CWD test cwd=\"/home/user/app\" other content";
        String line2 = "type=PATH test name=\"config/application.yml\" other content";
        
        String cwd = null;
        // 处理CWD行
        Matcher cwdMatcher = CWD_PATTERN.matcher(line1);
        if (cwdMatcher.find()) {
            cwd = cwdMatcher.group(1);
        }
        
        // 处理PATH行
        if (cwd != null) {
            Matcher nameMatcher = NAME_PATTERN.matcher(line2);
            if (nameMatcher.find()) {
                String fullPath = cwd + "/" + nameMatcher.group(1);
                System.out.println(fullPath);
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:36:01