Java 替换文本文件中的特定字符串

Java 替换文本文件中的特定字符串,java,regex,string,Java,Regex,String,我试图替换给定文本文件中出现的某个字符串。以下是我编写的代码: BufferedReader tempFileReader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile))); File tempFileBuiltForUse = new File("C:\\testing\\anotherTempFile.txt"); Writer changer = new BufferedWriter(new

我试图替换给定文本文件中出现的某个字符串。以下是我编写的代码:

BufferedReader tempFileReader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile)));
File tempFileBuiltForUse = new File("C:\\testing\\anotherTempFile.txt");
Writer changer = new BufferedWriter(new FileWriter(tempFileBuiltForUse));
String lineContents ;
while( (lineContents = tempFileReader.readLine()) != null)
{
    Pattern pattern = Pattern.compile("/.");
    Matcher matcher = pattern.matcher(lineContents);
    String lineByLine = null;
    while(matcher.find())
    {
        lineByLine = lineContents.replaceAll(matcher.group(),System.getProperty("line.separator"));
        changer.write(lineByLine);
    }
}
changer.close();
tempFileReader.close();
假设我的
tempFile
的内容是:

This/DT is/VBZ a/DT sample/NN text/NN ./. 
我希望
另一个tempFile
包含:

此/DT为/VBZ a/DT示例/NN文本/NN。
用一条新的线

但是我没有得到想要的输出。我看不出我错在哪里-( 请帮忙。:-

点在正则表达式中表示“每个字符”。试着逃避它:

Pattern pattern = Pattern.compile("\\./\\.");
(您需要两个反斜杠来转义字符串中的反斜杠本身,这样Java就知道您想要一个反斜杠而不是一个特殊字符作为换行符,例如,
\n
在正则表达式中,点(
)匹配任何字符(换行符除外),因此,如果希望它与文字点匹配,则需要对其进行转义。此外,您似乎缺少正则表达式中的第一个点,因为您希望模式匹配

Pattern pattern = Pattern.compile("\\./\\.");

/。
是正则表达式
\[任何符号]

更改为“/\”

您的正则表达式有问题。此外,您不必使用模式和匹配器。只需使用String类的replaceAll()方法进行替换。这会更简单。请尝试以下代码:

        tempFileReader = new BufferedReader(
                new InputStreamReader(new FileInputStream("c:\\test.txt")));
        File tempFileBuiltForUse = new File("C:\\anotherTempFile.txt");
        Writer changer = new BufferedWriter(new FileWriter(tempFileBuiltForUse));
        String lineContents;
        while ((lineContents = tempFileReader.readLine()) != null) {
            String lineByLine = lineContents.replaceAll("\\./\\.", System.getProperty("line.separator"));
            changer.write(lineByLine);
        }
        changer.close();
        tempFileReader.close();

好得多。但是现在,生成的输出是换行符中的每个单词。仍然不是我想要的。只是一个小的编辑,用于匹配模式。只是用于
/。
这将与您以前建议的相同吗?