我有一个来自最终用户的原始输入,如下所示
javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')
输入:
$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
但是它不起作用, 我认为使用的正则表达式是错误的, 请帮助
答案 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
希望有帮助。