如何装饰的表达用通配符剧本吗?

0

的问题

我有一个脚本,分析一个网址。 如果查询结果包含用户和密码,它将检索这一点。

因此,我想保持PHP查询,如果有必要的。


      Add-Type -AssemblyName System.Web
    
    $url = "http://toto.site:8080/user/password12349876toolong/2716?checkedby:toto.net"
    
    
    $uri = [System.Uri]$url
    $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
    if (!($url -like '\?checkedby\:'))
    {
    echo "this is a chekedby url"
    $filter = $url.TrimEnd("\?checkedby\:toto.net")
    echo "filter : $filter"
    }
    echo "url: $url"
    echo "query: $query"
    echo "host: $IPTVhost"
    echo "port: $IPTVport"
    echo "segment: $Segments"
    echo "proto: $proto"
    echo "username: $username"
    echo "password: $password"

我要过滤器的字符串当我进入一个网址在我的剧本(这是经常发现的查询,但不是总是). 我知道它总是开始 "? Checkedby:""& checkedby:" 并且总是在这结束的网址。

问题:链是可变的,它可以是:

http://toto.com:8080/get.php?username=toto&password=toto&checkedby:titi.com

http://toto.com/1234/4321/5678?checkedby:anyone.xyz

http://toto.com/1234/4321/5678?master.m3u8&checkedby:anyelse.to

或者这样的废话:

http://toto.com:8080/get.php?username=toto&password=toto&type=output.ext?checkedby:titi.com

我已经尝试了多种方法与TrimEnd但没有什么帮助。 唯一的事情作品是一门精确的表达,如:

$filter = $url.TrimEnd("\?checkedby\:toto.net")

但是,这并不工作(这是正常的)有一个网址,结束:

&checkedby:another.com.

因此,问题:

如何消除一切开始的:

&checkedby:

?checkedby:

谢谢你。

powershell
2021-11-24 02:06:37
1

最好的答案

2

建设在 圣地亚哥Squarzon 's的有用的评论:

使用 regex基于操作过 -replace 操作员:

'http://toto.com:8080/get.php?username=toto&password=toto&checkedby:titi.com',
'http://toto.com/1234/4321/5678?checkedby:anyone.xyz',
'http://toto.com/1234/4321/5678?master.m3u8&checkedby:anyelse.to',
'http://toto.com:8080/get.php?username=toto&password=toto&type=output.ext?checkedby:titi.com' |
  ForEach-Object { $_ -replace '[?&]checkedby:.+' }

对于一个解释的regex和选择的实验,看看 这个regex101.com page.

2021-11-24 03:00:59

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................