正则表达式的混合结果,匹配 html 代码中的短语列表
这篇新帖子是对另一篇帖子的回应,Perl Regex match lines that contains multiple words,但由于我不知道的原因被版主删除了。在原始线程中问这个问题对我来说似乎是合乎逻辑的,因为它与尝试使用该线程早期给出的解决方案以及它的问题有关。有一个对faq的通用引用,它似乎没有显示任何差异,以及消息,“如果您有问题,请发布您自己的问题。” 因此这篇文章。
我正在使用 LWP::Simple 获取网页,然后尝试匹配包含某些短语的行。我在上述线程中的答案#1中复制了正则表达式,并替换/添加了我需要匹配的单词,但是我得到的结果与两个相似但不同的网页混合在一起。
我正在使用的正则表达式是:
/^(?=.*?\bYear\b)(?=.*?\bNew Moon\b)(?=.*?\bFirst Quarter\b)(?=.*?\bFull Moon\b)(?=.*?\bLast Quarter\b).*$/gim
对于网站#1,它有包含这些单词的裸行,在一系列由<pre>..</pre>
标签包围的块中,它匹配所有与该行完全相同的行,如预期的那样:
Year New Moon First Quarter Full Moon Last Quarter
但是对于网站#2,它的单词周围有令人讨厌的小标签:
<br><br><span class="prehead"> Year New Moon First Quarter Full Moon Last Quarter ΔT</span><br>
它匹配每一行!
我确定<span>
标签是执行此操作的“正确”方式,但我想知道如何绕过这些标签,以便我可以为两个站点只使用一个正则表达式。有没有一种简单的方法可以做到这一点,还是我必须学习如何解析 html(我不想这样做)?
我正在寻找一种快速的解决方案,而不是一个强大的解决方案。这可能是一次性的交易。如果这些相对静态的页面发生变化,它可能会很小并且很容易修复。请不要向我介绍所有“反正则表达式换html”页面。我见过他们。请不要让我使用 HTML::TreeBuilder。哦拜托...