Удалите все строки, которые не соответствуют регулярному выражению в Notepad ++ - PullRequest
1 голос
/ 22 июня 2010

У меня есть ряд файлов определенного формата. Я вставил пример здесь .

----------------------------------------------
Attempting to factor n = 160000000000110400000000018963... Found a factor: 400000000000129
Time (s): 18.9561
----------------------------------------------
Attempting to factor n = 164025000000137700000000028819... Found a factor: 405000000000179
Time (s): 22.3426
----------------------------------------------
Attempting to factor n = 168100000000155800000000036051... Found a factor: 410000000000197
Time (s): 101.183

Мне бы хотелось регулярное выражение, которое я могу использовать для записи времени, например, для всех строк с форматом «Время (ы): X.Y» я хочу сохранить X.Y на отдельной строке и выбросить ВСЕ, ЧТО ЕЩЕ.

У меня есть следующее выражение: Время (с): \ s + (\ d +. \ D +), которое фиксирует их. Это захватывает строки, которые мне нужны, но Notepad ++, кажется, имеет функциональность только для замены чего-либо, а не для сохранения того, что ему соответствует. Поэтому я могу удалить все эти строки, что почти противоположно тому, что я хочу.

Любая помощь?

Ответы [ 5 ]

3 голосов
/ 22 июня 2010

Ну, я не знаю Noteplad ++, но вполне вероятно, что вы можете использовать результат групп захвата в поле замены. Либо попробуйте

\1

или

$1

1 = первая группа захвата. Таким образом, вы в основном заменяете всю строку на \ 2 в вашем случае.

1 голос
/ 22 июня 2010

Используйте это в командной строке:

for /f "usebackq tokens=3" %a in (`findstr /b "Time" 1.txt`) do @echo %a
0 голосов
/ 12 марта 2013

Настройте ваше регулярное выражение так, чтобы оно либо совпадало со строкой «Время» и фиксировало время внутри, либо совпадало со всей строкой. Затем замените захваченным текстом, который будет пустым для игнорируемых строк.

Find what:     (Time \D+(\d+.\d+)|.*)
Replace with:  \2

Это дает вам последовательность захваченных времен плюс пустые строки, которые можно удалить с помощью команды «Удалить пустые строки» TextFX или расширенной замены на «\ r \ n \ r \ n».

0 голосов
/ 21 декабря 2012

Выполните следующие шаги (Блокнот ++ 6.2.3):

  1. Очистите и пометьте

    Замените: ^(Time \(s\):)+ ([.\r]*) на: #\2

  2. Удалить неотмеченные строки

    Заменить: ^[^#]+[.\n]* на: (empty)

  3. Удалить отметку

    Заменить: ^#(.*)с: \1

0 голосов
/ 22 июня 2010

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

.*\(s\)\:\s+(\d+.\d+)

Теперь вы можете заменить это на

\1

, который дает вам соответствующую группу номер 1 (единственная группа в вышеприведенном выражении), которая соответствует времени

...