2014-01-24 2 views
0

У меня есть CSV файл, как с тысячами строк, как эти теRegex, который соответствует образцу, который не occurr с помощью Notepad ++

40;206;343;-840;127.5;0;6 
44;194;343;-837;127.5;0;6 
48;183;343;-836;127.5;0;6 

(7 полей, разделенных semicolumn).

Однако в некоторых случаях есть некоторые «ошибки», такие как больше разделителя полей или отсутствующего разделителя полей, например.

40;20;;6;343;-;840;127.5;0;6 
4;4;194;343;-837;127.5;0;6 
48;183;343;-836;;;;;6 

Как я могу сопоставить эти вхождения с помощью Notepad ++ (версия 6+) с использованием регулярного выражения?

ответ

1

Чтобы соответствовать действительные строки формата CSV, вы можете использовать:

((?:[ \n\r]|^)\w+(?:;[\w.-]+){6}(?:[ \n\r]|&)) 

DEMO

ОБЪЯСНЕНИЕ:

enter image description here

+1

Мне нравится эта диаграмма, откуда она взялась? –

+2

@patchandthat: http://www.regexper.com/ –

+1

Удивительный ответ! благодаря – Albz

1

SujithPS ответить правильно, но для ваши данные могли бы упростить r egex:

^(?:[^;]*;){6}[^;]*$ 

Это будет соответствовать правильным строкам. Вы можете проверить его на regex101.

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

  1. Хит Ctrl +F (или перейдите в меню Search>Find...).
  2. Затем перейдите на страницу Mark tab.
  3. Найти: ^(?:[^;]*;){6}[^;]*$
  4. Установите флажок Bookmark line и переключатель Regular expression.
  5. Затем нажмите кнопку Mark.
  6. Теперь вы можете инвертировать закладочные строки, используя Search>Bookmark>Inverse Bookmark, и из этого же меню вы можете удалить их или что-то еще.
Смежные вопросы