Regex для инвертирования поиска в Notepad++
У меня есть строка
2012-02-19 00:11:12,128|DEBUG|Thread-1|@@@ Time taken is 18 ms
Ниже регулярное выражение позволяет мне искать 18 ms
\d\d\s[m][s]
Что я хочу сделать, это поиск строки до 18 ms
в Notepad++, а затем удалите его. Так что из тысяч строк, которые я имею, я могу просто извлечь тайминги.
Кроме того, мне нужно упомянутое выше регулярное выражение для работы с таймингами, которые состоят из 3 и 2 цифр. Например, он должен иметь возможность искать 18 ms
так же как 999 ms
,
Пожалуйста помоги.
3 ответа
Кроме того, мне нужно упомянутое выше регулярное выражение для работы с таймингами, которые состоят из 3 и 2 цифр.
.*?(?=\d{2,3}\sms\b)
Используйте приведенное выше регулярное выражение, а затем замените совпадение пустой строкой.
Вы можете поместить свое регулярное выражение в позитивный взгляд:
^.*(?=\d{2,3}\sms\s*$)
Если у вас есть текст после 18 ms
, вам нужно использовать границу слова\b
:
\b
позволяет выполнять поиск "только целых слов" с помощью регулярного выражения в форме\bword\b
^.*(?=\d{2,3}\sms\b)
Посмотреть демо
{2,3}
является ограничительным квантификатором, который позволяет вам сопоставить 2 или 3 предшествующего подшаблона.
Существует дополнительный квантификатор, который позволяет указать, сколько раз токен может повторяться. Синтаксис
{min,max}
где min - ноль или положительное целое число, указывающее минимальное количество совпадений, иmax
целое число равно или больше, чемmin
с указанием максимального количества совпадений. Если запятая присутствует, ноmax
опущено, максимальное количество совпадений бесконечно.
Вы можете заменить на пустую строку и 18 ms
останется на линии.
Обратите внимание, что вы можете использовать \d+
разрешить сопоставление 1 или более цифр (без ограничения числа цифр).
Примечание 2: если ваш номер является первым из многих в строке, вам нужно использовать ленивое соответствие, то есть использовать .*?
вместо .*
в начале картины.