Регулярное выражение: удалить строки, не начинающиеся с цифры - PullRequest
11 голосов
/ 01 декабря 2009

Я боролся с этой проблемой с помощью шпаргалки RegEx, пытаясь выяснить, как это сделать, но я сдаюсь ... У меня есть этот длинный файл, открытый в Notepad ++, и я хотел бы удалить все строки, которые не начинайте с цифры (0..9). Я бы использовал функциональность Find / Replace N ++. Я только упоминаю об этом, поскольку я не уверен, что реализация Regex используется с помощью N ++ ... Спасибо

Пример. Из следующего текста:

1hello
foo
2world
bar
3!

Я хотел бы извлечь

1hello
2world
3!

не

1hello

2world

3!

выполняя поиск / замену регулярного выражения.

Ответы [ 5 ]

23 голосов
/ 01 декабря 2009

Вы можете очистить эту строку с помощью ^[^0-9].*, но она оставит пустые строки.

Notepad ++ использует scintilla, а также использует его механизм регулярных выражений, чтобы соответствовать им.

\ r и \ n никогда не совпадают, потому что в Сцинтилла, поиск по регулярному выражению сделаны линии на линию (лишены символы конца строки).

http://www.scintilla.org/SciTERegEx.html

Чтобы убрать эти пустые строки, выберите только расширенный режим и замените \ n \ n на \ n. Если вы находитесь в режиме Windows, измените \ r \ n \ r \ n на \ r \ n

8 голосов
/ 01 декабря 2009

[^0-9] - это регулярное выражение, которое соответствует практически всем, кроме цифр. Если вы говорите ^[^0-9], вы «привязываете» его к началу строки в большинстве систем регулярных выражений. Если вы хотите включить остальную часть строки, используйте ^[^0-9].+.

7 голосов
/ 01 декабря 2009

^[^\d].* отмечает целую строку, первый символ которой не является цифрой. Проверьте, действительно ли нет пробелов перед цифрами. В противном случае вам придется использовать другое выражение.

UPDATE : Вам придется сделать два шага. Сначала очистите строки, которые не начинаются с цифры. Затем удалите пустые строки в расширенном режиме.

3 голосов
/ 08 ноября 2011

Можно также использовать технику закладки в Notepad ++. Я начал извлекать выгоду из этой функции (давно присутствующей, но только недавно сделанной несколько более заметной в пользовательском интерфейсе) не так давно.

Просто вызовите диалог поиска, введите regex для строк, не начинающихся с цифры ^\D.*$, и выберите Пометить все. Это поместит синие круги, как мрамор, в левый желоб - это линейные закладки. Затем просто выберите в главном меню Поиск -> Закладка -> Удалить отмеченные строки.

Закладки - это круто, вы можете извлечь эти строки, просто выбрав скопировать строки с закладками, открыв новый документ и вставив туда строки. Я иногда использую эту технику при просмотре файлов журнала.

1 голос
/ 01 декабря 2009

Я не уверен, что вы спрашиваете. но reg exp для нахождения строк с цифрой в начале будет ^ \ D. * Вы можете удалить все строки, соответствующие приведенному выше, или поочередно сохранить все строки, соответствующие этому выражению: ^ [^ \ D]. *

...