0

*** 编辑示例以显示顺序不是一个因素

我有一个包含内容的文件:

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>

我想删除前一行以相同字符串开头并以包含(或包含字符串)的文件结尾的行:

ABC-123 BLA bla 
ABC-234 AAA
ABC-567 ddd

目前我的代码只是将文件的内容保存到一个字符串中:

if (new File('description.txt').length() > 0 ) {
    description = new File('description.txt').text
}

我想更新文件或保存描述字符串中的第一个“非唯一”行加上唯一行。

4

1 回答 1

0

Groovy 使用 java regex 引擎,但我在regex101上的示例几乎与您需要的相同 - 可能只是使用双反斜杠而不是单反斜杠。您还需要在(?m)开始时使用多行支持修饰符。

/(^\S+ )([^\n]*\n)\1([^\n]*\n)/

解释:

(^\S+ )匹配行首的非空格,后跟一个空格。它被捕获为组 #1

([^\n]*\n)将其他所有内容匹配到换行符

\1是匹配组 #1 中匹配的任何内容的反向引用

([^\n]*\n)第二行的其余部分

然后你替换匹配$1$2的第一个和第二个捕获组。

于 2018-03-17T04:08:49.403 回答