2015-06-24 1 views
0

я использую следующее выражение в Notepad ++ удалить повторяющиеся строки:Как удалить несогласованные строки в тексте с помощью RegEx?

^(.*)(\r?\n\1)+$ 

Проблема:

  1. Это только для отдельных линий слова, если есть место в очереди не будет Работа.
  2. Это только для последовательных дублирующих линий.

Есть ли решение (желательно регулярное выражение или макрос) для удаления повторяющихся строк в тексте, который содержит пробел, а какие несоответствия?

+1

Пожалуйста, после того, что вы пробовали, текст, который вы работаете и ожидаемые результаты. –

+1

Хорошо, позвольте мне помочь: ваш файл выглядит как 'Line1 \ r \ nLine1 \ r \ nLine1 \ r \ nLine1 \ r \ nLine 2 \ r \ nLine 2', и вы хотите повернуть его в' Line1 \ r \ nLine 2 \ r \ nLine 2'? Вы пробовали какое-либо регулярное выражение? Или любые плагины? –

ответ

1

Поскольку никто не заинтересован, я опубликую то, что, по вашему мнению, вам нужно.

удалить повторяющиеся строки в тексте, который содержит пространство, и которые непоследовательных

Я предполагаю, что у вас есть текст, имеющий, скажем, повторяющиеся строки My Line One and some text и My Line Two and more text:

My Line One and some text 
My Line One and some text 
My Line Two and more text 
My Line One and some text 
My Line Two and more text 

Эти повторяющиеся строки не все подряд (только первые два).

Таким образом, вы можете удалить повторяющиеся строки, выполнив поиск и замену:

^(.+)\r?\n(?=[\s\S]*?^\1$) 

Замените пустую строку.

Regex примечание: ^ и $ рассматриваются как начальная строка/концевые анкеры по умолчанию, так что мы только соответствовать одной линии и захватить его с ^(.+)$. Затем мы сопоставляем символ новой строки (любой стиль ОС) с \r?\n. Взгляд вперед (?=...) проверяет, есть ли какой-либо текст (с [\s\S]*?) после проверки нашей линии с тем же содержимым (с ^\1$, где \1 - это обратная ссылка на текст линии).

enter image description here

+0

Я использовал этот, который работает только по последовательным линиям: ^ (. *) (\ R? \ N \ 1) + $ Регулярное вы выложили работы! Спасибо, и хорошего дня. – Jim8645

+0

Пожалуйста, примите ответ (отметьте слева внизу стрелку вниз), так как решение работает для вас. –

+0

Вместо '\ r? \ N' вы можете использовать' \ R' для соответствия любым разрывам строки ('CRLF',' CR' и 'LF's). –

Смежные вопросы