需要帮助提取 url 并将其拆分为单独的变量
Need help on extracting and spliting url in to seperate variables
我有一个来自最终用户的原始输入到一个变量,如下所示
javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')
- 我想从上面的输入中提取url。
- 我想使用“/”拆分 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
希望对您有所帮助。
我有一个来自最终用户的原始输入到一个变量,如下所示
javascript:DS('https://HS/v1/dev/A/Machinename/SNAPNAME','XXXXX')
- 我想从上面的输入中提取url。
- 我想使用“/”拆分 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
希望对您有所帮助。