因此,我拥有此PowerShell脚本,该脚本将通过将"https://www.youtube.com/watch?v="
替换为"id="
而不替换URL ID来替换Youtube URL。
示例:
之前的电子白板变量:https://www.youtube.com/watch?v=FigUL6NWtqw
电子白板变量,然后:id=FigUL6NWtqw
这是我已经尝试过的:
powershell
$Copyboard = Get-Clipboard | Out-String
$Copyboard = $Copyboard -replace "https://www.youtube.com/watch?v=", "id="
答案 0 :(得分:2)
可使用正则表达式-Replace
运算符获得结果。这样会用=
替换所有内容,直到第一个id
字符为止。
$Copyboard = $Copyboard -Replace "^[^=]+","id"
使用-Split
运算符,可以在查询值前加上id=
。我使用=
字符作为分隔符,并返回带有=
索引的[1]
之后的所有数据。在这里,我使用了格式运算符(-f
),但是您可以使用选择的任何串联技术。
$Copyboard = "{0}{1}" -f 'id=',($Copyboard -Split "=")[1]
另一种方法是首先将$Copyboard
转换为[uri]
,只有在您不为$Copyboard
重新赋新值的情况下,以后才能为代码打开其他选项。然后访问要更改的属性(在这种情况下为query
),仅输出更改后的属性。对于uri对象,将复制的uri的不同部分分解为多个子部分,并将得到的子部分存储为对象的属性。
将regex -Replace
运算符与uri对象一起使用:
([uri]$copyboard).Query -Replace "^[^=]+","id"
答案 1 :(得分:1)
源字符串“。”中有一些正则表达式字符。和“?”。大多数情况下,问号让您感到困惑。 (不带“ |字符串”)
x <- data.frame(
"type" = c("new", "new", "old", "old", "new", "new", "old", "old"),
"date" = as.Date(c("2018-01-01", "2018-01-01", "2018-01-01", "2018-01-01", "2018-01-08", "2018-01-08", "2018-01-08", "2018-01-08")),
"score" = c("1.5", "2.5", "2.6", "3.7", "5.2", "8.6", "5.2", "8.6"),
"category" = c("actual", "predicted", "actual", "predicted", "actual", "predicted", "actual", "predicted"),
stringsAsFactors = F)
library(ggplot2)
ggplot(x, aes(x=date, y=score, group = paste(category, type), linetype = category, colour = paste(category, type))) +
geom_line(size = 1.25) +
scale_color_manual(
values = c("#4286f4", "#f9026d", "#4286f4", "#f9026d")
)
您可以使用转义版本:
$a = 'https://www.youtube.com/watch?v=FigUL6NWtqw'
[regex]::escape('https://www.youtube.com/watch?v=')
https://www\.youtube\.com/watch\?v=
或反斜杠?:
$a -replace [regex]::escape('https://www.youtube.com/watch?v='), 'id='
或者不使用正则表达式的.net .replace():
$a -replace 'https://www.youtube.com/watch\?v=', 'id='
答案 2 :(得分:0)
听起来您只需要从输入字符串中提取最后一个基于=
的令牌,这是使用-split
运算符最容易(尽管不是最快)的方法:
$Copyboard = 'id=' + ((Get-Clipboard -Format Text) -split '=')[-1]
请注意使用-Format Text
来确保从剪贴板中检索到文本。
索引[-1]
从令牌数组中检索 last 元素,该元素是通过用=
将字符串-split '='
拆分为FigUL6NWtqw
而得到的}和您的示例输入。
顺便说一句:这里没有什么区别,但是请注意,PowerShell的-split
operator 与.NET .Split()
method 不同由正则表达式组成,通常比.Split()
更强大-请参见this answer。