1

我使用 pcregrep 在 html 代码中查找多行模式。

我尝试匹配类似于此的内容:

<some-html-stuff>
                    sometext<more-html-stuff>

行首与行首之间sometext的间距正好等于六个制表符。由于表达式\s匹配制表符、换行符和空格,我认为

pcregrep -M -o -H "(?<=some-html-stuff\>[\s]{7})[A-Za-z0-9]*" /path/file.html

会为我做这项工作。但它没有(我添加了一个额外的休息时间)。我实际上尝试了这个数字的几种变体,但都不起作用。

我监督了什么?

编辑:

匹配之前应该sometext没有任何空格。

4

2 回答 2

1

此正则表达式将为您工作:

(?<=some-html-stuff\>\n\s{7})([A-Za-z0-9]+)

您需要\n在使用之前插入\s{7} 以匹配 7 个选项卡,或者\s{8}像这样使用:

(?<=some-html-stuff\>)\s{8}([A-Za-z0-9]+)

因为\s也匹配\n

正则表达式演示

于 2014-08-03T10:01:24.297 回答
1

您可以使用\K而不是向后看,

pcregrep -M -o -H "<some-html-stuff\>\s*\K[A-Za-z0-9]+" /path/file.html

演示

或者

pcregrep -M -o -H "some-html-stuff\>\n\t{7}\K[A-Za-z0-9]+" /path/file.html

演示

于 2014-08-03T10:23:11.017 回答