***显示顺序的编辑示例不是因素
我有一个包含内容的文件:
ABC-123 BLA bla</br>
ABC-123 lala lala</br>
ABC-234 AAA</br>
ABC-123 CCC</br>
ABC-567 ddd</br>
ABC-234 BBB</br></br>
我想删除前面一行以相同字符串开头的行,最后是一个包含(或包含String)的文件:
ABC-123 BLA bla
ABC-234 AAA
ABC-567 ddd
目前我的代码只是将文件的内容保存为字符串:
if (new File('description.txt').length() > 0 ) {
description = new File('description.txt').text
}
我想更新文件或保存第一个“非唯一”行以及描述字符串中的唯一行。
答案 0 :(得分:0)
Groovy使用java正则表达式引擎,但regex101上的示例几乎与您需要的相同 - 可能只是使用双反斜杠而不是单反斜杠。您还需要在开头使用多行支持修饰符(?m)
。
/(^\S+ )([^\n]*\n)\1([^\n]*\n)/
<强>解释强>
(^\S+ )
匹配行开头的非空格,后跟空格。它被捕获为组#1
([^\n]*\n)
与换行符之外的所有内容匹配
\1
是一个反向引用,用于匹配组#1中匹配的任何内容
([^\n]*\n)
第二行的其余部分
然后替换与$1$2
匹配的第一个和第二个捕获组。