Regex 返回使用perl找到字符串的页码/块号

Regex 返回使用perl找到字符串的页码/块号,regex,perl,Regex,Perl,我有一个这样结构的文本文件 --- Page 01 --- blah blahblah blahblahblah --- Page 01 --- --- Page 02 --- blah asdf svlah blahblahsafblah --- Page 02 --- --- Page 03 --- nothing here --- Page 03 --- 我想要一种方法来查找关键字blah出现的页码a,而不考虑出现的频率 有什么想法吗?非常感谢 编辑: 我发现下面的一行代码似乎可以实现这

我有一个这样结构的文本文件

--- Page 01 ---
blah blahblah
blahblahblah
--- Page 01 ---
--- Page 02 ---
blah asdf svlah
blahblahsafblah
--- Page 02 ---
--- Page 03 ---
nothing here
--- Page 03 ---
我想要一种方法来查找关键字
blah
出现的页码a,而不考虑出现的频率

有什么想法吗?非常感谢

编辑: 我发现下面的一行代码似乎可以实现这个目的,但输出有空行。它怎么了?如果我删除
\n
我会得到一长串数字…:(

输出:

01


02

这里发生的是,从“blah”的第一个匹配开始,它满足所有行,直到找到“Page(\d+)”

试试这个:

    perl -ne 'print "$1$2" if /blah/ .. /--- Page (\d+) ---(\n)/'

是的,你的工作正常。
perl-0777-ne'print“$1\n”while/blah.*.---Page(\d+)/gs'
也是我自己发现的。
    perl -ne 'print "$1$2" if /blah/ .. /--- Page (\d+) ---(\n)/'