2015-07-14 3 views
0

У меня есть огромная равноширинные строка, которая выглядит, как показано ниже:регулярного выражения - извлечение строк в, специфических позициях

B100000DA3F19C          Android                        600    AND            2011-08-29 15:03:21.537 
352a0D21ffd800000a3a95911801700e     iPad                         600    iOS            2011-08-29 19:35:12.753 
. 
. 
. 

Мне нужно извлечь первую часть (ИН) и четвертую часть (типа устройства - " И "или" iOS "). Первый столбец начинается с 0 и заканчивается в 51-й позиции для всех строк. Четвертая часть начинается с 168 и заканчивается на 171 для всех линий. Длина каждой строки - 244 символа. Если это сложно, другой вариант - удалить все в этом файле, кроме идентификатора и типа устройства. Этот единственный файл содержит около 800 тыс. Записей размером 180 МБ, но Notepad ++, похоже, справляется с этим.

Я попытался выполнить данные импорта SQL Server, но даже если Preview выглядит нормально, когда данные вставлены в таблицу, это неточно.

У меня есть следующий до сих пор, что дает мне первые 51 символов -

^(.{51}).* 

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

ответ

3

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

^(.{51}).{117}(.{3}) 

Скобки захваты (результаты вы вылезая), в то время как скобки счетчики.

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

^(.{51}).{117}(.{3}).*$ 
+0

Почти там! Это дает мне и дату. Как я могу избавиться от него? Мне нужен только идентификатор и тип устройства. Я сделал это в Notepad ++ - Find What:^(. {51}). {117} (. {3}) Замените:/1/2/3. – tempid

+0

Извините, я действительно не поймал, какую библиотеку регулярных выражений вы используете. Я предполагаю, что он построен в Notepad ++? В любом случае замените его на/1/2 (поскольку у вас есть только два захвата). – axic

+0

Пробовал «\ 1 \ 2», но все же дает мне дату. Да, я использую встроенное regex lib из Notepadd ++. – tempid