我试图编写一个正则表达式,用于在CSV文件中搜索一系列网页的源代码。我使用以下内容进行匹配:
$linkContent = $web.DownloadString($linkToBeConverted)
$object = [regex]::Matches($linkContent, $regex)
我试图在列表中搜索class =" menu"看它里面是否有链接。不幸的是,我似乎比我需要的方式更匹配。当我击中某个字符串时,我想要一种方法来阻止比赛。特别是div class =" test"按照下面的例子。
现在这是我的正则表达式:
(?sm)<ul class="menu">.*?(<a href="h).*?(<\/ul>)
以下是我试图搜索的源代码。如果我的正则表达式是正确的,那么这不应该是匹配的。但是,因为在第二个列表之间存在一个链接(未定义为class =&#34; menu&#34;)我得到一个匹配。我有什么方法可以编写这个正则表达式,以便在div class =&#34; test&#34;找到了吗?作为模板的结果,div class =&#34; test&#34;应始终位于菜单列表后面的代码中。
<ul class="menu">
<li>
<p>Yes there are paragraph tags and random stuff in these lists...</p>
</li>
<li>
<div><span>Example</span>
</div>It's pretty random
</li>
<li>Nothing here!</li>
</ul>
<div class="test">
<p><a href="http://match.html"></p>
<ul>
<li>Unfortunately this will cause a match since there's another list</li>
</ul>
非常感谢您的帮助!我整个上午一直在努力工作,我完全迷失了。如果有一种方法可以在PowerShell中执行此操作,我也可以这样做。