在找到## using regex后,如何删除带有模式匹配器的行

时间:2016-04-12 14:51:47

标签: java regex

用于删除vi am文件评论

 content = content.replaceAll("##", "");//if found ## in line then remove

2 个答案:

答案 0 :(得分:0)

使用Java 8:

Pattern notToMatch = Pattern.compile("##");
Files.lines(Paths.get(fileLocationString))
    .filter(l -> ! notToMatch.matcher(l).find())
    .collect(Collectors.joining(System.lineSeparator()));

它将返回包含输入文件的String,排除“##”的行。然后可以将String写入文件以覆盖它们。

  • Files.lines(path)返回文件行的Stream行。
  • Stream.filter可让我们过滤掉与Predicate不匹配的行。这里我们使用lambda作为谓词返回True IFF,该行与“##”模式不匹配
  • .collect会将传入的Stream包装到返回的对象中。在这里,我们使用Collectors.joining(separator)将它们加入一个String

如果没有包含在现有的Java进程中,我个人建议在Java之外进行这种转换。在bash + GNU工具环境中,文件转换就像grep -v "##" filePath > filePath一样简单。

答案 1 :(得分:0)

通过使用正则表达式找到解决方案,希望它可以帮助某人

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