我的.txt文件包含6,000,000行。我想要刮掉140,000行。我使用reepx101的notepad ++ insted因为有太多的行要刮掉。整个文件看起来像这样:
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"
Sender: nick <email@gmail.com>
Message: Thats my message**
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"
Sender: another-nick <another-email@gmail.com>
Message: Another message
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"
当然,这看起来并不完全像。不是“发件人”和“消息”的行有点随机。我想用“发件人”和每封邮件中的邮件提取行中的每封电子邮件。当然我想把消息和电子邮件结合起来,所以我必须有Sender和他的消息。
例如:
email1 - his message
email2 - his message
email3 - his message
好的,这似乎很容易,对吧?问题是,当我搜索:
Sender: .+ <.+>
它给出了140,000行
但是当我搜索:
Message: .+
它给了我139,094行。我试图找到“断行”:
^(?!Sender: .+ <.+>)\r\n\Message: .+)
但这不起作用。我认为我的编码技巧还不够好。我只是不知道我错在哪里。
我还试图找到“好”的行:
Sender: .+ <.+>\r\n\Message: .+
它运作正常。但我不知道如何提取。我为每个找到的正则表达式添加了书签,它看起来像是:
http://puu.sh/nL6n4/3f6331b16b.png
现在,当我点击“搜索 - &gt;书签 - &gt;复制书签行”时,我只有:
Sender: nick <email@gmail.com>
Sender: another-nick <another-email@gmail.com>
没有消息..我很厌倦它。有人可以帮我吗?
答案 0 :(得分:1)
我希望我能正确理解你的问题,这就是我将如何做到这一点:
在Notepad ++中打开文件,然后按Ctrl + F打开搜索对话框,将标签更改为&#34;标记&#34;。然后检查&#34; Mark line&#34;并激活正则表达式。
要搜索的第一个正则表达式是Sender:[^<\r\n]*<([^\r\n]*)>\r?\nMessage:\s*([^\r\n]*)
。这将为发件人开头的所有行添加书签(后跟消息行)。
然而,这并没有标记消息行,因为Notepad ++不支持这一点 - 但我们可以通过进行另一次标记搜索来进行一些操作。现在正则表达式为Sender:[^<\r\n]*<([^\r\n]*)>\r?\n\KMessage:\s*([^\r\n]*)
。请注意\K
重置标记开始。现在还标记了消息行。
转到搜索 - 书签 - 删除未标记的行,以便只留下您的发件人和邮件行。
现在是替换的时间,再次使用正则表达式Sender:[^<\r\n]*<([^\r\n]*)>\r?\nMessage:\s*([^\r\n]*)
并将其替换为$1 - $2
。