A substituição de ^(?:nunc (KEEP THIS LINE.*)|.*\n)$
por atingirá a saída desejada:
-
Devido ao alternador (
|
), a expressão^(?:nunc (KEEP THIS LINE.*)?|.*\n)$
forçará a correspondência da linha inteira, sem capturá-la (?:
designa um grupo sem captura). -
Se a linha começar com
nunc KEEP THIS LINE
,se referirá ao interior dos parênteses, isto é, a string começando com
KEEP THIS LINE
e terminando no final da linha. -
Se a linha não começar com
nunc KEEP THIS LINE
,.*\n
corresponderá à linha inteira, incluindo o caractere de nova linha de término.
A expressão regular acima funciona bem com o Perl.
No Notepad ++ com quebras de linha do Windows, você pode usá-lo:
^(?:nunc (KEEP THIS LINE.*)|.*(\r\n)?)
Observe que isso só removerá a última linha e não a removerá.