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

如何用Java在文本文件中查找指定单词并将匹配行保存到新文件

问题解答

要不要使用正则表达式?

不一定必须使用正则表达式,你可以根据自己的匹配需求选择实现方式:

  • 如果仅需要判断行内是否包含指定字符串(不需要区分是否为独立单词,比如搜app时,包含apple的行也会被命中),直接用String类自带的contains()方法即可,逻辑最简单,适合初学者快速实现。
  • 如果需要严格匹配独立的完整单词(比如搜app时,只有单独出现app的行才会命中,包含apple的行不会被选中),用正则表达式实现会更简洁,不需要自己额外写边界判断逻辑。

修改后的可运行代码示例

以下是基于你的原有逻辑调整的、使用contains()的最简实现版本,已经加了匹配判断逻辑,同时优化了流关闭的写法(用Java自带的try-with-resources语法自动释放资源,无需手动写close):

import java.io.*;

// Java规范要求类名首字母大写,这里把原类名change改成了Change
public class Change {
    // 替换成你要查找的目标单词
    private static final String TARGET_WORD = "你要查找的指定单词";

    public static void main(String[] args) {
        // 注意路径不要写反:第一个是你要读取的源文件路径,第二个是保存结果的目标文件路径
        String sourceFilePath = "path\\你的源文件.txt";
        String resultFilePath = "path\\保存结果的文件.txt";
        try (
            BufferedWriter bw = new BufferedWriter(new FileWriter(resultFilePath));
            BufferedReader br = new BufferedReader(new FileReader(sourceFilePath))
        ) {
            String line;
            while ((line = br.readLine()) != null) {
                // 仅当前行包含目标单词时才写入新文件
                if (line.contains(TARGET_WORD)) {
                    bw.write(line + "\n");
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

如果需要严格匹配独立完整单词,可以把上述代码中的if判断替换为正则实现即可:

import java.util.regex.Pattern;

// 省略其他和上面相同的代码
Pattern pattern = Pattern.compile("\\b" + Pattern.quote(TARGET_WORD) + "\\b");
if (pattern.matcher(line).find()) {
    bw.write(line + "\n");
}

其中\b是正则的单词边界匹配符,Pattern.quote()是为了避免目标单词包含正则特殊字符(比如.、*)时匹配出错,如果需要忽略大小写匹配,可以在编译正则时加参数Pattern.CASE_INSENSITIVE。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:24:02