2016-07-14 5 views
-2

У меня такой текстовый файл. Он имеет более чем 500000 линий:Регулярное выражение для удаления символов перед строкой

('12', '9', '56', 'Trojan.Genome.Win32.230770', '04df65889035a471f8346565600841af', '9190953854e36a248819e995078a060e0da2e687', 'b6488037431c283da6b9878969fecced695ca746afb738be49103bd57f37d4e4', '2015-10-16 00:00:00', 'Zillya', '16', 'TROJAN', 'trojan.png', '2016-01-14 21:35:44') ; # line1

('13', '3', '54', 'UnclassifiedMalware', '069506a02c4562260c971c8244bef301', ' d08e90874401d6f77768dd3983d398d427e46716', ' 78e155e6a92d08cb1b180edfd4cc4aceeaa0f388cac5b0f44ab0af97518391a2', « 2015-10-15 00:00 : 00 ',' Comodo ',' 6 ',' MALWARE ',' malware.png ', ' 2016-01-14 21:35:44 '); # line2

Я только хочу, чтобы сохранить текстовый файл в чем-то вроде этого:

Trojan.Genome.Win32.230770, 04df65889035a471f8346565600841af, 9190953854e36a248819e995078a060e0da2e687, b6488037431c283da6b9878969fecced695ca746afb738be49103bd57f37d4e # line1

UnclassifiedMalware, 069506a02c4562260c971c8244bef301, d08e90874401d6f77768dd3983d398d427e46716, 78e155e6a92d08cb1b180edfd4cc4aceeaa0f388cac5b0f44ab0af97518391a2 # line2

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

+3

Кажется, что вы разделены запятой, почему бы вам просто не разделить ее и удалить ненужные ячейки? – User1234

+0

Какой двигатель/среда разработки? –

+0

@ User1234 Это только первые две строки файла. Файл фактически имеет более 500 тысяч строк! – Viettungvuong

ответ

0

Если это предполагается сделать несколько раз, этого решения может быть недостаточно, просто из-за отсутствия документации.

Простое применение регулярного выражения к файлу (возможно, даже не сохранение) на самом деле не воспроизводимо/понятно для других.

Я предлагаю небольшой скрипт python, чтобы четко понять, что вы на самом деле делаете. Кроме того, вы получите полный контроль над точным форматом вывода, где он пишет и т. Д.

# get regex module 
import re 

filename = 'path/to/your/file.txt' 

# open file 
with open(filename) as file_handle: 
    for line in file_handle: 
     # remove trailing whitespace 
     line = line.strip() 

     # if line is empty forget about it 
     if not line: 
      continue 

     # split into comment part and data part 
     data, comment = line.split(';') 

     # transform into comma seperated values 
     # aka. remove whitespace, parentheses, quotes 
     data = re.sub(r'\s|\(|\)|\'', '', line) 

     # file is build up like this (TODO: make names more logical) 
     nr1, nr2, nr3,               \ 
     name,                 \ 
     hash1, hash2, hash3,             \ 
     first_date, discoverer, nr4,           \ 
     category, snapshot_file, last_date = data.split(',') 

     # print, or possibly write 
     print("{name:}, {hash1:}, {hash2:}, {hash3:} {comment:}".format(**locals())) 
+0

только что прочитал ваш комментарий о написании на C++, что-то подобное, конечно же, может быть сделано и на этом языке. –

0

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

'([^']*)',\s* 

найти апостроф, а затем захватить весь текст, пока он не встречает следующую одну цитату, а затем через запятую и любые конечные пробельные символы.

Затем вы повторите это несколько раз, раз для каждого поля, разделенного запятой.

Это будет выглядеть немного like this, а затем вы можете выбрать, какие поля заменить на свой текст. В этом случае вы хотите только поля \4 через \8.

Не может быть записано, что \1 через \3 не были взяты? Разумеется, используя группу, не захватывающую (?:...). Тогда ваши замены будут варьироваться от \1 до \5. Но это делает его достаточно гибким, если вы хотите включить или исключить любое из других полей, это так же просто, как включить или исключить их в поле подстановки.

+0

Но как я могу это сделать в Notepad ++? – Viettungvuong

+0

Просто избавитесь от [лишних пробелов в шаблоне] (https://regex101.com/r/uG5tN7/2). Знание того, что это в Notepad ++ (или любой другой движок/редактор/язык), полезно знать заранее, чтобы мы знали, нужно ли адаптировать наши ответы каким-либо определенным образом. – OnlineCop

Смежные вопросы