需要帮助提取 url 并将其拆分为单独的变量

Need help on extracting and spliting url in to seperate variables

我有一个来自最终用户的原始输入到一个变量,如下所示 javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')

  1. 我想从上面的输入中提取url。
  2. 我想使用“/”拆分 url 以分隔变量。

输入:

$DSURL = "javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')"


[regex]$regex = '(?<=https:\/\/\HS\/v1\/dev\/A\?t=)(.*)(?=' )'

$regex.Matches($DSURL).Value

1 美元 = https://HS/v1/dev/A/Machinename/SNAPNAME $2 = Machinename $3 = SNAPNAME

但它不起作用, 我认为使用的正则表达式是错误的, 请帮忙

这使用 [uri] 类型加速器将 uri string 转换为 uri object。然后它使用 .Segments 属性 获取最后两个段并将它们放入 $Vars 中。

您可能想查看存储在 $UriObject 变量中的各种属性以获取其他一些有趣的信息。 [咧嘴一笑]

$DSUrl = "javascript:DS('https://HS/v1/dev/A/SpiffyDoodleServer/SomeSortOfThing','XXXXX')"

$CleanedDSU = $DSUrl.Split('(')[1].Split(',')[0].Trim("'")
$UriObject = [uri]$CleanedDSU

$MachineName = $UriObject.Segments[-2].Trim('/')
$SnapName = $UriObject.Segments[-1]

$DSUrl
$CleanedDSU
$MachineName
$SnapName

输出...

javascript:DS('https://HS/v1/dev/A/SpiffyDoodleServer/SomeSortOfThing','XXXXX')
https://HS/v1/dev/A/SpiffyDoodleServer/SomeSortOfThing
SpiffyDoodleServer
SomeSortOfThing

我已经成功地提取了它并且它正在正确地选择输出 URL。

$text = "javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')"
($text | Select-String -Pattern @"
(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
"@).Matches.Value

输出:

https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX

希望对您有所帮助。