我试图在AppleScript中使用正则表达式,将两个变量设置为某些文本的不同子字符串,这些字符串采用以下格式并在系统剪贴板上(尽管文本和URL可以随意变化,并且在URL之后通常是一个空行:
This is a webapge title
http://url.foo.com/
我想将第一行分配给pageTitle
,将第二行分配给pageURL
,并忽略其他所有内容。我认为这样做的AppleScript是:
set titleURL to the clipboard
set pageTitle to (do shell script "echo \"" & titleURL & "\" | sed -E 's#(.*)\\n(.*)\\n?#\\1#'")
set pageURL to (do shell script "echo \"" & titleURL & "\" | sed -E 's#(.*)\\n(.*)\\n?#\\2#'")
正则表达式执行我想要的when I test it on regex101.com,但AppleScript会为两个变量返回整个字符串,不受影响。我错过了一些明显的东西吗?
答案 0 :(得分:1)
我设法通过简单地将pageTitle
设置为剪贴板的第一行并pageURL
设置为第二行,并在awk
的帮助下完成了工作:
set titleURL to the clipboard
set pageTitle to (do shell script "pbpaste | awk '{ if (NR==1) print $0 }'")
set pageURL to (do shell script "pbpaste | awk '{ if (NR==2) print $0 }'")
不是最有趣或一般的解决方案,但它对我的目的来说是完美的。感谢@DavidRavetti和@jmunsch的有用建议。