在标记后取 X 符号并保存到 AppleScript 中的变量

Take X Symbols After a Marker and Save to Variable in AppleScript

我正在寻找一种方法,通过 AppleScript 在剪贴板中的 URL 中的 ?v= 部分之后获取 11 个符号,并将它们保存到变量中。这是 link:

的示例
https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert

所以我需要一个小脚本,它可以在剪贴板中获取 link,识别 ?v= 之后的 11 个符号,从 [=26= 中取出这 11 个符号(PxDK95Q5qN0) ] 并将其保存到变量中(例如 extract)。

我确实找到了部分解决方案 here — 但该解决方案仅在两部分之间时有效,例如?v=&。该解决方案的问题是许多 link 很短并且没有最后一个 & 符号(例如 https://www.youtube.com/watch?v=PxDK95Q5qN0

我将不胜感激任何帮助或指点! :]

那个 macsripter link 为您指明了正确的方向(尽管有很多信息需要消化)。只要你是 运行 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

将 link 拆分为文本项 - 拆分为“=”和“&” - return 是第二项。

像这样使用它:

set theV to getTheV("http://...")

您提供的 link 两个 return 都是正确的值。

是否将剪贴板设置为,例如:

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"

下面的example AppleScript code returns [=之后的十一个字符=14=]:

set extract to do shell script ¬
    "sed -Ee 's/.*[?]v[=]([a-zA-Z0-9_-]{11}).*/\1/'<<<" & ¬
    (the clipboard as text)'s quoted form
  • 请注意,可以使用 \?v\= 代替 sed 命令的 [?]v[=] 部分 如果 ?= 被视为 常规字符 而不是 shell 特殊字符 .

  • 此外,如果目标角色的数量从 11 变为 ?v=& 仍在播放,如您的示例,那么此 正则表达式,下面进一步解释,处理它:

    .*[?]v[=]([a-zA-Z0-9_-]+[^&]).*


备注:

如果 11 个目标字符包含不同于 捕获组中显示的内容:

([a-zA-Z0-9_-]{11})

然后根据需要进行修改。


使用 https://regex101.com 中的信息来解释 regexsed command 中使用:

感兴趣的主要部分是 Capturing Group ([a-zA-Z0-9_-]{11}),因为这是返回的内容,如果它直接存在于 ?v= 之后 URL.




捕获组是:([a-zA-Z0-9_-]+)