Java 在使用正则表达式找到##后,如何使用pattern matcher删除一行

Java 在使用正则表达式找到##后,如何使用pattern matcher删除一行,java,regex,Java,Regex,它用于删除vi-am文件注释 content = content.replaceAll("##", "");//if found ## in line then remove 使用Java 8: Pattern notToMatch = Pattern.compile("##"); Files.lines(Paths.get(fileLocationString)) .filter(l -> ! notToMatch.matcher(l).find()) .collec

它用于删除vi-am文件注释

 content = content.replaceAll("##", "");//if found ## in line then remove
使用Java 8:

Pattern notToMatch = Pattern.compile("##");
Files.lines(Paths.get(fileLocationString))
    .filter(l -> ! notToMatch.matcher(l).find())
    .collect(Collectors.joining(System.lineSeparator()));
它将返回一个包含输入文件的字符串,不包括带“##”的行。然后可以将字符串写入文件以覆盖它们

  • 文件。行(路径)
    返回文件行的
    
    
  • Stream.filter
    使我们能够筛选出与
    谓词不匹配的行。在这里,如果行与“##”模式不匹配,我们使用lambda作为谓词返回True
  • .collect
    将传入的
    包装到返回的对象中。这里我们使用
    收集器。连接(分隔符)
    将它们重新连接到单个
    字符串中

我个人建议在Java之外进行这种转换,如果它不必包含在现有的Java进程中的话。在bash+gnutools环境中,文件转换将像grep-v“###”filePath>filePath一样简单

通过使用regex找到了解决方案,希望对其他人有所帮助

content = content.replaceAll("##.*", "");//remove comments

到底是什么不起作用?我不知道如何编写一个正则表达式,删除它在中看到的每一行,但没有发现任何东西,我的意思是整行不仅仅是###你能提供你搜索的文本吗?lambad给了我一个错误,说模式不能应用于lambada paremeter,不能导入收集器,或者我遗漏了一些东西,我想是因为它的java 7我不能使用收集器