我正在寻找一种方法,通过AppleScript将11个符号在之后的 ?v=
中的一部分,并将它们保存到一个变量中。这是一个链接的例子。
https://www.youtube.com/watch?v=PxDK95Q5qN0&ab_channel=TheLateShowwithStephenColbert
所以我需要一个小脚本来获取剪贴板中的链接 识别出11个符号后的符号 ?v=
,把这11个符号(PxDK95Q5qN0
),并将其保存到一个变量中(例如 extract)。
我确实找到了一个部分解决方案 此处 – 但这个只有在两个部分之间的时候才会有效,如 ?v=
和 &
. 该解决方案的问题是,许多链接都很短,而且没有最后的&符号(例如。https://www.youtube.com/watch?v=PxDK95Q5qN0
)
在这里,我很感谢大家的帮助和指点! :]
解决方案:
无论你将剪贴板设置为,如,,。
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 编码 后面的11个字符返回 ?v=
:
set extract to do shell script ¬
"sed -Ee 's/.*[?]v[=]([a-zA-Z0-9]{11}).*/\\1/'<<<" & ¬
(the clipboard as text)'s quoted form
注意:
\\?v\\=
可以代替[?]v[=]
的部分sed
指挥 反正?
和=
被视为 正字 而不是 特殊字符.此外,如果目标字符的数量从11个改变,但
?v=
和&
在你的例子中,仍然在发挥作用,那么这个 检索词,并在下面进一步说明,处理它。.*[?]v[=]([a-zA-Z0-9]+[^&]).*
使用来自 https:/regex101.com 来解释 检索词 用在 sed
指挥:
兴趣的主要部分是 捕获组 ([a-zA-Z0-9]{11})
后返回的,因为这就是返回的内容,如果它直接存在于 ?v=
在 网址.