You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在脚本中使用通配符删除URL末尾的checkedby可变后缀

解决方法

TrimEnd()仅支持固定字符/固定字符串批量匹配,不适合处理可变后缀场景,针对你需要删除URL末尾所有以?checkedby:或&checkedby:开头内容的需求,直接用正则替换即可实现,适配你列出的所有URL场景。

核心实现代码

只需要在将字符串转为Uri对象之前,加一行正则替换逻辑即可:

# 清理URL末尾的checkedby片段
$cleanUrl = $url -replace '[?&]checkedby:.*$', ''

完整修改后的脚本

Add-Type -AssemblyName System.Web

# 原始输入URL(可替换为实际接收的输入变量)
$url = "http://toto.site:8080/user/password12349876toolong/2716?checkedby:toto.net"

# 清理末尾的checkedby相关片段
$cleanUrl = $url -replace '[?&]checkedby:.*$', ''

# 后续统一使用清理后的$cleanUrl做解析
$uri = [System.Uri]$cleanUrl
$query = $uri.Query
$IPTVhost = $uri.Host
$IPTVport = $uri.Port
$Segments = $uri.Segments.TrimEnd('/')
$proto = $uri.Scheme

$ParsedQueryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)

if(!$query) {
    if ($Segments[1].TrimEnd('/') -eq "live"){
        $username = $Segments[2].TrimEnd('/')
        $password = $Segments[3].TrimEnd('/')
    }
    else
    {
        $username = $Segments[1].TrimEnd('/')
        $password = $Segments[2].TrimEnd('/')
    }
}
else {
    $username = $ParsedQueryString['username']
    $password = $ParsedQueryString['password']
}
cls
# 检测原始URL是否包含checkedby片段(可选逻辑)
if ($url -match '[?&]checkedby:')
{
    echo "this is a checkedby url"
    echo "filter : $cleanUrl"
}
echo "url: $url"
echo "cleaned url: $cleanUrl"
echo "query: $query"
echo "host: $IPTVhost"
echo "port: $IPTVport"
echo "segment: $Segments"
echo "proto: $proto"
echo "username: $username"
echo "password: $password"

正则规则说明

[?&]checkedby:.*$的匹配逻辑:

  • [?&]:匹配?或者&两种标记前缀
  • checkedby::匹配固定的标记头
  • .*$:匹配从该位置开始直到URL末尾的所有字符
    替换为空字符串即可直接删除整个末尾的checkedby片段,哪怕是带两个?的不规范URL也能正常匹配处理。

内容的提问来源于stack exchange,提问作者Rickey Mandraque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:06:03