将X符号置于标记后,并保存到AppleScript中的变量

将X符号置于标记后,并保存到AppleScript中的变量,applescript,Applescript,我正在寻找一种方法,通过AppleScript在剪贴板中的URL的?v=部分之后获取11个符号,并将它们保存到一个变量中。下面是一个链接示例: https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert 所以我需要一个小脚本,它可以在剪贴板中获取一个链接,在?v=之后识别11个符号,从该链接中获取这11个符号(PxDK95Q5qN0),并将其保存到一个变量中(例如extract) 我确

我正在寻找一种方法,通过AppleScript在剪贴板中的URL的
?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})