Не уверен, что это работает, но я использовал это в Textmate:
^(?:(?<![\f\n\r])(?:.*))(?=[\f\n\r])|^.*(?![\f\n\r])$
Первая часть,
^(?:(?<![\f\n\r])(?:.*))(?=[\f\n\r])
находит первую строку. Не уверен насчет Notepad ++, но (досадно) Textmate соответствует ^ любому началу строки. Поэтому мне пришлось проверять текст (. *), За которым следует подача формы, перевод строки или возврат ([\ f \ n \ r]), а не предшествует то же самое.
Вторая часть,
^.*(?![\f\n\r])$
было проще. Он просто находит начало строки (^) с текстом (. *), За которым не следует конец строки.
РЕДАКТИРОВАТЬ : после перечитывания сообщения ОП я получаю, что он должен иметь начальный и закрывающий теги. Для этого вы можете использовать первую часть выражения для начального тега и последнее выражение для конечного тега.