在大型文档的新行之间搜索随机文档“标题”

时间:2019-03-20 19:58:01

标签: php regex sed full-text-search notepad++

如何在大型(700mb)和“未格式化”的txt文件中为随机的“标题”计数?

“标题”始终采用以下格式:\n + random title + \n。但是,多个\n可以连续出现。

我正在寻找使用Notepad ++或任何其他编辑器的解决方案,仅用于计算结果数(例如,使用正则表达式),或者使用sed代码提取这些标题,或其他任何方法任何语言代码(例如Python,PHP等)的解决方案!

示例:


This is a random Title

Text Text Text Text Text
Text Text Text Text Text

This is a another random Title

Text Text Text Text Text
Text Text Text Text Text
Text Text Text Text Text
Text Text Text Text Text




This is a another another random Title

Text Text Text Text Text
Text Text Text Text Text
Text Text Text Text Text


This is a another another another random Title

Text Text Text Text Text
Text Text Text Text Text
Text Text Text Text Text

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式根据给定的文本来匹配或计算标题的数目,根据该文本,标题后面将有两个换行符,并且至少要有两个换行符。

(?:\r?\n\r?\n|\A\r?\n?)[^\r\n]+(\r?\n){2}

Check this demo

为了使它在Windows和Linux上都可以使用,我选择性地加入了\r,但是如果您的行尾仅是Linux,则可以从其中删除\r

此外,如果您只想匹配和提取标题,则可以使用分组来捕获标题,或者使用环视功能仅匹配标题。这是一个正则表达式的分组版本,它捕获了group1中的标题,

(?:\r?\n\r?\n|\A\r?\n?)([^\r\n]+)(\r?\n){2}

Demo for matching title in group1

此外,已在Notepad ++ 7.6.1中验证

enter image description here

答案 1 :(得分:0)

$ awk -v RS= -F'\n' 'NF==1{c++} END{print c+0}' file
4

上面的代码只是打印出任意数量的空白行之间有一条非空白行的次数。