将X符号置于标记后,并保存到AppleScript中的变量
我正在寻找一种方法,通过AppleScript在剪贴板中的URL的将X符号置于标记后,并保存到AppleScript中的变量,applescript,Applescript,我正在寻找一种方法,通过AppleScript在剪贴板中的URL的?v=部分之后获取11个符号,并将它们保存到一个变量中。下面是一个链接示例: https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert 所以我需要一个小脚本,它可以在剪贴板中获取一个链接,在?v=之后识别11个符号,从该链接中获取这11个符号(PxDK95Q5qN0),并将其保存到一个变量中(例如extract) 我确
?v=
部分之后获取11个符号,并将它们保存到一个变量中。下面是一个链接示例:
https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert
所以我需要一个小脚本,它可以在剪贴板中获取一个链接,在?v=
之后识别11个符号,从该链接中获取这11个符号(PxDK95Q5qN0
),并将其保存到一个变量中(例如extract)
我确实找到了一个部分解决方案,但只有当它位于两个部分之间时才起作用,例如?v=
和&
。该解决方案的问题在于,许多链接都很短,并且没有最后一个&符号(例如https://www.youtube.com/watch?v=PxDK95Q5qN0
)
如果您能在这里提供帮助或指点,我将不胜感激!:] macsripter链接为您指明了正确的方向(尽管有很多信息需要消化)。只要运行10.6或更高版本,就可以使用以下例程:
on getTheV(link_text)
set {tid, my text item delimiters} to {my text item delimiters, {"=", "&"}}
set theV to second text item of link_text
set my text item delimiters to tid
return theV
end getTheV
它将链接拆分为文本项-在“=”和“&”上拆分,并返回第二项
像这样使用它:
set theV to getTheV("http://...")
您提供的两个链接都返回正确的值。是否将剪贴板设置为,例如:
set the clipboard to "https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert"
或者,例如:
set the clipboard to "https://www.youtube.com/watch?v=PxDK95Q5qNO"
以下示例AppleScript代码返回?v=
后面的11个字符:
set extract to do shell script ¬
"sed -Ee 's/.*[?]v[=]([a-zA-Z0-9_-]{11}).*/\\1/'<<<" & ¬
(the clipboard as text)'s quoted form
然后根据需要修改它
使用info from解释
sed
命令中使用的正则表达式:
感兴趣的主要部分是捕获组([a-zA-Z0-9_-]{11})
,因为这是返回的内容,如果它直接位于URL中的?v=
之后
当捕获组为:
([a-zA-Z0-9_-]+)
提取的
字符计数当前返回23
。通过从中省略尾部的p
标志,它将返回正确的结果。我将其更改为sed-E的s/*[?][v][=]([a-xA-Z0-9]{11})。*/\\1/'
-注意p
标志被省略,因为它也在打印图案空间。我还删除了-e
选项。(注意:我使用的是BSD SED)@RobC,在测试中我完全没有注意到,p
已被删除,谢谢@user10460848,当您接受我的答案时,我的答案的sed
cmd中有一个输入错误,很抱歉,我已经更新了答案,请看一看并使用更正的代码,谢谢。@RobC-非常感谢,您对user3439894的初始答案的修复真的成功了!user3439894-感谢您编写初始答案并对其进行更新。各位,你们太棒了,谢谢你们花时间回复。我在这里真的学到了很多东西,并提高了我的AppleScript和shell技能!非常非常感谢!问题中没有具体说明,但一些youtube url视频字符串包括“-”或“-”,这不会由上述代码处理(例如3_zLyE8eIUo、Hfhl-hOlb2Y)。
([a-zA-Z0-9_-]{11})