Regex删除字符串前的字符

Regex删除字符串前的字符,regex,Regex,我有一个这样的文本文件。它有超过50万行: ('12','9','56','Trojan.Genome.Win32.230770', “04DF65889035A471F834655600841AF”, “9190953854e36a248819e995078a060e0da2e687”, ‘B6488037431C283DA6B9878969FECCED695CA746AFB738BE49193BD57F37D4E4’, “2015-10-16 00:00:00”,“Zillya”,“16”,

我有一个这样的文本文件。它有超过50万行:

('12','9','56','Trojan.Genome.Win32.230770', “04DF65889035A471F834655600841AF”, “9190953854e36a248819e995078a060e0da2e687”, ‘B6488037431C283DA6B9878969FECCED695CA746AFB738BE49193BD57F37D4E4’, “2015-10-16 00:00:00”,“Zillya”,“16”,“特洛伊木马”,“特洛伊.png”, '2016-01-14 21:35:44'); 第1行

('13','3','54','UnclassifiedMalware', “069506A02C4562260C971C8244BEF01”, ‘D08E90874401D6F777768DD3983D398D427E46716’, ‘78E155E6A92D08CB1B180EDFD4CC4ACEAA0F388CAC5B0F44AB0AF97518391A2’, “2015-10-15 00:00:00”,“Comodo”,“6”,“恶意软件”,“恶意软件.png”, '2016-01-14 21:35:44'); #第2行

我只想将文本文件保存到如下内容中:

特洛伊木马.Genome.Win32.230770,04DF65889035A471F83465565600841AF, 9190953854e36a248819e995078a060e0da2e687, b6488037431c283da6b9878969fecced695ca746afb738be49103bd57f37d4e4 第1行

非机密软件,069506A02C4562260C971C8244BEF01, D08E90874401D6F7768DD3983D398D427E46716, 78E155E6A92D08CB1B180EDFD4CC4ACEAA0F388CAC5B0F44AB0AF97518391A2 第2行


我已经尝试了我能想到的所有正则表达式,但它们都不起作用。

由于这是一个逗号分隔的文件,您可以使用正则表达式来搜索和替换,尽管它的效率远不如在语音编程语言中拆分字符串

'([^']*)',\s*
将找到一个单引号,然后捕获所有文本,直到它遇到下一个单引号,后跟逗号和任何尾随空格

然后,您将重复多次,每个逗号分隔的字段一次

它看起来有点像,然后你可以选择哪些字段替换回你的文本。在这种情况下,您只需要字段
\4
\8


是否可以编写它,以便不捕获
\1
\3
?当然,使用非捕获
(?:…)
组。然后您的替换范围从
\1
\5
。但这使得它足够灵活,如果您想包含或排除任何其他字段,只需在替换字段中包含或排除它们即可。

如果要多次执行此操作,可能会因为缺少文档而缺少此解决方案

对其他人来说,仅仅将正则表达式应用于文件(甚至可能不保存它)是不可复制的/不可理解的

我建议使用一个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()))

看起来你是一个逗号分隔的结构,为什么不拆分它并删除不需要的单元格?什么引擎/开发环境?@User1234这只是文件的前两行。这个文件实际上有50多万行@MichalM我正在使用C++,正如user@User1234所说,用逗号作为分隔符标记字符串。从想要的令牌构造新字符串。但我如何在记事本++中实现它呢?只要去掉。知道这是在记事本+ +(或任何其他引擎/编辑器/语言)有助于了解前面,所以我们知道是否要裁剪我们的反应在任何特定的方式。现在阅读你的评论写在C++中,类似的东西当然也可以在该语言中完成。