regex+;np+++;捕获页面顶部的字符串和页面底部的字符串

regex+;np+++;捕获页面顶部的字符串和页面底部的字符串,regex,notepad++,Regex,Notepad++,这是我的 我想做的是能够捕获表和页码。下面是我想要的输出示例。希望我想要的桌子部分是显而易见的。在由统计数据(第一个数字)聚合的10 4文本核心统计数据中,页码为10;在由统计数据12(最后一个数字)聚合的4文本核心统计数据中,页码为12 在np++中,我可以使用Table\d+获取所有表,但我还需要来自同一页底部的页码 我所拥有的: Table 1: bifrost <lots of randon text > 10 4 Text Core statistics aggrega

这是我的

我想做的是能够捕获表和页码。下面是我想要的输出示例。希望我想要的桌子部分是显而易见的。在由统计数据(第一个数字)聚合的
10 4文本核心统计数据中,页码为
10
;在由统计数据12
(最后一个数字)聚合的
4文本核心统计数据中,页码为
12

在np++中,我可以使用
Table\d+
获取所有表,但我还需要来自同一页底部的页码

我所拥有的:

Table 1: bifrost

<lots of randon text >

10 4 Text Core statistics aggregated by the Statistics 

<lots of randon text >

4 Text Core statistics aggregated by the Statistics 11

Table 2: homestead

<lots of randon text >

4 Text Core statistics aggregated by the Statistics 12

<lots of randon text >

12 4 Text Core statistics aggregated by the Statistics 


Table 3: homestead

<lots of randon text >

12 4 Text Core statistics aggregated by the Statistics 
编辑1 关于以下可能的答案,如果这有帮助:

(Table\d*)。(?=\d++\s(\d++\s)?文本核心)([^\n]+)(。(?=^Table\d++\z))
--找不到任何内容
(Table\d*).
-works查找

(表\d*)
-workds查找
表和行的编号部分(例如
表1

*?(?=\d+\s(\d+\s)?文本核心)
-works在以数字(^0长度匹配)开头的行的开头查找数字
(?=\d+\s(\d+\s)?文本核心)
-works在以数字(^zero length match)开头的行的开头查找数字
([^\n]+)
-works查找包含文本的行(即突出显示所有文本)

(.*(?=^Table\d+|\z))
-此操作将查找行的开头,表位于行的开头

我至少可以提供部分解决方案。按以下模式进行更换:

^(?!Table)(?!\d+ (?:\d+ )?Text Core).*$
并将其替换为空字符串。这将删除以
表格
开头或包含
文本核心
的行之间的所有随机文本。以下是一个工作演示:


我至少可以提供部分解决方案。按以下模式进行更换:

^(?!Table)(?!\d+ (?:\d+ )?Text Core).*$
并将其替换为空字符串。这将删除以
表格
开头或包含
文本核心
的行之间的所有随机文本。下面是一个工作演示:


编辑实际下载了notepad++并测试了正则表达式

这将有助于:

(^Table \d+).*?(?=\d+\s(\d+\s)?Text Core)([^\n]+)(.*?(?=^Table \d+|\z))
它使用正向前瞻搜索表号之后的第一个页码,然后获取从那里到行尾的所有内容。然后它把所有的东西都拿到下一张桌子上。请注意,您需要检查
。匹配换行符


如果要进行替换,请将其替换为
\1\n\3\n

Edit实际下载了notepad++并测试了正则表达式

这将有助于:

(^Table \d+).*?(?=\d+\s(\d+\s)?Text Core)([^\n]+)(.*?(?=^Table \d+|\z))
它使用正向前瞻搜索表号之后的第一个页码,然后获取从那里到行尾的所有内容。然后它把所有的东西都拿到下一张桌子上。请注意,您需要检查
。匹配换行符


如果要进行替换,请将其替换为
\1\n\3\n

*(?!Table\d+:\w+。*
我尝试了这种消极的前瞻,但它正在删除我想保留的行,例如
Table…
@HattrickNZ显然不起作用,因为你把
*
放在了前面。顺便说一下,如果你的实际数据与你在你的问题中所发表的内容不同,现在是说某事的好时机。TKS,我开始工作,然后用SED删除所有空白行。<代码> *(?!表\D+:\W+).*
我尝试了这种消极的前瞻,但它正在删除我想要保留的行,例如,
表….
@HattrickNZ显然不起作用,因为您将
*
放在前面。顺便说一下,如果你的实际数据与你在你的问题中所发表的内容不同,现在是说某事的好时机。TKS,我开始工作,然后用SED删除所有空白行。@ TimiGeEeleSein我是从OPS原始演示例子中工作的,它命名了组。但也许我没有正确理解这个问题,因为我需要采取行动。@TimBiegeleisen编辑了这篇文章,希望它更有用。我已经下载了notepad++(最新版本,v7.5.6)并对此进行了测试。发现了一些问题,但现在它确实对我有效。还更新了regex101上的演示。是的,我无法想象7.5.4和7.5.6彼此有那么大的不同。你有没有试过只是找一个?这和什么匹配吗?你确定你已经检查了
。是否匹配换行符
框(在Regexp单选按钮旁边)?如果您有regex
(Table\d*)。
应该匹配整个文档,而不仅仅是以Table开头的行。否则我会感到困惑…@TimBiegeleisen我是从OPs的原始演示示例开始工作的,该示例已命名为组。但也许我没有正确理解这个问题,因为我需要采取行动。@TimBiegeleisen编辑了这篇文章,希望它更有用。我已经下载了notepad++(最新版本,v7.5.6)并对此进行了测试。发现了一些问题,但现在它确实对我有效。还更新了regex101上的演示。是的,我无法想象7.5.4和7.5.6彼此有那么大的不同。你有没有试过只是找一个?这和什么匹配吗?你确定你已经检查了
。是否匹配换行符
框(在Regexp单选按钮旁边)?如果您有regex
(Table\d*)。
应该匹配整个文档,而不仅仅是以Table开头的行。否则我会很困惑。。。