在提取和分割网址以分离变量方面需要帮助

时间:2019-05-27 06:14:07

标签: powershell powershell-v4.0

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

  1. 我想从上述输入中提取网址。
  2. 我想使用'/'分割网址以分隔变量。

输入:

$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

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

2 个答案:

答案 0 :(得分:0)

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

您可能需要查看存储在.Segments变量中的各种属性,以获取其他一些有趣的信息。 [咧嘴]

$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

答案 1 :(得分:0)

我设法将其拉出,它正在正确选择输出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

希望有帮助。