gpt4 book ai didi

regex - 通过Powershell提取和更新HTML字符串中的URL

转载 作者:行者123 更新时间:2023-12-02 23:28:58 24 4
gpt4 key购买 nike

我有一个包含URL的字符串(实际上有数百个),我想更新它们。

这是旧的URL格式http://oldDomain/a/b/document.aspx?p1=v1&p2=NEEDED_VALUE&morePsHere=moreVsHere
,这是更新之后我需要它们的外观http://newDomain/c/d/NEEDED_VALUE
我几乎要做的就是在旧的URL中提取p2的值,并将其附加到http://newDomain/c/d/中以创建新的URL。

我以为我要获取的字符串看起来像这样:

$s = "http://oldDomain/a/b/document.aspx?p1=v1&p2=001&morePsHere=moreVsHere,
http://oldDomain/a/b/document.aspx?p1=v1&p2=002&morePsHere=moreVsHere,
http://oldDomain/a/b/document.aspx?p1=v1&p2=003&morePsHere=moreVsHere"

,我可以使用以下内容进行更新:
$newURLStart = "http://newDomain/c/d/"
$newStr = $null
$s.Split(",") | ForEach {
if ($_.IndexOf("p2=") -ne 1)
{
$neededValue = $_.Substring($_.IndexOf("p2=")+3)
if ($neededValue.IndexOf("&") -ne -1)
{
$neededValue = $neededValue.Substring(0,$neededValue.IndexOf("&"))
}
$newStr = $newStr + ", " + $newURLStart + $neededValue
}
}
$newStr = $newStr.TrimStart(", ")
$s = $newStr

但是,事实证明我要获取的字符串不是纯文本,实际上看起来像:
$s = '<div class="someClass"><p>SomeText</p><ul>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=001&amp;morePsHere=moreVsHere">LINK ONE</a></li>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=002&amp;morePsHere=moreVsHere">LINK TWO</a></li>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=003&amp;morePsHere=moreVsHere">LINK THREE</a></li>
</ul></div>'

这比我用逗号分隔的期望要复杂一些!我需要帮助更新脚本以适应事实。我认为正则表达式可能会在这里发挥作用,以获取 href中的URL,但是在这方面,我还是很菜鸟。

最佳答案

如果将所有字符串都扔到文件中,则可以执行以下操作:
Get-Content "testregex.html" | % {$_ -replace 'href=".+?;.+?=(.+?)&amp;(.+?)"', 'href="http://newdomain/c/$1"'} | Set-Content "newtestregex.html"
将此文件作为输入:

<div class="someClass"><p>SomeText</p><ul>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=001&amp;morePsHere=moreVsHere">LINK ONE</a></li>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=002&amp;morePsHere=moreVsHere">LINK TWO</a></li>
<li><a href="http://oldDomain/a/b/document.aspx?p1=v1&amp;p2=003&amp;morePsHere=moreVsHere">LINK THREE</a></li>
</ul></div>

产量:
<div class="someClass"><p>SomeText</p><ul>
<li><a href="http://newdomain/c/001">LINK ONE</a></li>
<li><a href="http://newdomain/c/002">LINK TWO</a></li>
<li><a href="http://newdomain/c/003">LINK THREE</a></li>
</ul></div>

关于regex - 通过Powershell提取和更新HTML字符串中的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21773104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com