Java正则表达式从文件中的句子行中提取特定的字符串

时间:2018-11-09 13:01:30

标签: java regex

我需要读取一个文件并仅获取以.csv结尾的文件名。该文件将包含以下几行

-dataFileName ABC.csv -command ii
-dataFileName EFG.csv -command ii
-dataFileName HIJ.csv -command ii
-dataFileName MNPQR.csv -command ii
-dataFileName UVXYZ.csv -command ii

我们可以看到 -dataFileName [XXXX] -命令ii 是重复的

我想要 ABC .csv, EFG .csv, HIJ .csv, MNPQR .csv,< em> UVXYZ .csv,作为我的控制台输出。

2 个答案:

答案 0 :(得分:0)

如果您只是想在字符串中利用-dataFileName和-command ii的重复,则可以使用Java简单地做到这一点,

replaceAll("-dataFileName| -command ii", "")

并编写类似这样的代码

public static void main(String args[]) throws Exception {
    List<String> list = Arrays.asList(
            "-dataFileName ABC.csv -command ii",
            "-dataFileName EFG.csv -command ii",
            "-dataFileName HIJ.csv -command ii",
            "-dataFileName MNPQR.csv -command ii",
            "-dataFileName UVXYZ.csv -command ii"
    );

    list.forEach(x -> {System.out.println(x + " --> " + x.replaceAll("-dataFileName| -command ii", ""));});
}

这将提供以下输出,

-dataFileName ABC.csv -command ii -->  ABC.csv
-dataFileName EFG.csv -command ii -->  EFG.csv
-dataFileName HIJ.csv -command ii -->  HIJ.csv
-dataFileName MNPQR.csv -command ii -->  MNPQR.csv
-dataFileName UVXYZ.csv -command ii -->  UVXYZ.csv

如果您不喜欢这样,可以使用此简单的正则表达式来完成工作,

-dataFileName (.*?) -command ii

并捕获第1组。

Demo

答案 1 :(得分:0)

我不明白为什么要为此使用正则表达式。您可以轻松地为它编写一个简单的解析器,当您的需求发生变化时它不会引起问题(需要处理报价?解析器足够容易,正则表达式很混乱)。

执行此操作的示例程序:

setPlaybackQuality