我有大量的文本文档,并尝试从每个文档中提取特定的部分。它始终以行的开头的“Item 7”开头,并始终以另一行的开头的“Item 8”结束。我可以使用正则表达式:
找到这一部分(^( *)Item 7(.+?)^( *)Item 8)
我的两个问题是:
在我的每篇文档中,可能有两个部分符合此描述。我想确保我只匹配第二个,这也要长得多。
如何使用notepad ++在“搜索和替换”查询中使用正则表达式提取此部分?
我不确定我是否使用了正确的工具。
谢谢!
补充: 到目前为止,在答案的帮助下,我在记事本++中做了以下操作。 搜索
。*(^(*)Item * 7(?! A)(?!。 ^ Item * 7(?!* A))(。+?)^(*)( ?= ^ Item 8))。
Raplce with
$ 1
到目前为止,感谢您的帮助。它有一个例外,效果很好。我担心我需要详细介绍:大多数(但不是全部)我想从中提取文本的文档都有一个内容表。这就是为什么我想提取“第7项至第8项”的第二种情况,以防有两种情况。还有一个项目7A,如果你想知道我的代码。
正如我现在所知,有很多文件,在第7项至第8项的第二种情况下,每个页面都有“第7项”作为标题。因此,我的代码只匹配第7项的最后一页在某些情况下。
我认为解决方案可能只是忽略第7项到第8项的情况,如果它们具有一定的最小长度。具体而言,只有在第7项至第8项的情况下,如果它们的符号少于120,则忽略它们。
有什么想法吗?
答案 0 :(得分:0)
我会建议:
^Item 7(?!.*^Item 7).*^Item 8
这会在文档中找到[Item 7 - Item 8]对中的最后一对。
使用Find函数在Notepad ++ 6.9.2中工作,使用正则表达式选项 并选中. matches newline
。
注意:Find all in Current Document
按钮似乎使用了对正则表达式的不同解释,显然忽略了负向前瞻。此解决方案仅适用于Find Next
按钮。