所谓人工智能,主要靠的是人工。
——开了个玩笑。不过,实现智能化剪贴板,的确需要许多人工的成分。
为什么需要智能剪贴板?
实现智能化的方法
原理其实很简单,就是利用 Workflow 中的 Actions 来识别 Clipboard 中的特定内容,根据不同内容执行不同的后续 Actions 或者其他 Workflow(Workflow 1.7.1:终于能在一个 Workflow 里运行另一个 Workflow 了)

内容识别我用到了以下两组 Actions
- If (Contains) 套 If (Contains)
- Match Text + Count + If (Is Less Than)
If Contains 的关键词识别
例如分析剪贴板内容来触发「保存 Twitter 图文到 Bear」这个 Workflow,关于这个 Workflow,可详见我的文章:Workflow + Pythonista 抓取 Twitter 图文内容。
做法就是在 Clipboard 这个主 Workflow 下设置一个 If Contains 来判断剪贴板内容是否包含「twitter」字符串。

举一反三,你可以判断 Clipboard 里的链接是来自知乎(包含zhihu)、P站(包含pixiv),还是来自国际版微博(包含oversea)呢。如果需要同时判断这三个,目前我只能像俄罗斯套娃那样 If Contains 套 If Contains 了——希望未来 Workflow 能引入 Switch/Case 这样的 Action !
利用正则表达式来匹配特定格式的字段
正则表达式是比较高级的字符串处理手段,但上面提到的 If Contains 似乎不支持正则表达式。其实,Workflow 里有几个 Action 是支持正则表达式的,Match Text 这个 Action 就是其中之一。
所谓正则表达式就是利用事先定义好的符号来表示一类字符(比如所有字母、所有数字),从而建立匹配规范来提取、检索符合该规范的字符串。

比如,利用^[0-9a-fA-F]{40}$这行正则表达式,就可以匹配 Input 中可能存在的磁力链哈希码(Hash)。

在 Workflow 中我是这样使用的:

- 先利用支持正则表达式的 Match Text 匹配是否有符合特定规则的字符串
- 用 Count 计算匹配结果数量
- 如果匹配结果数量不少于1,那么表示匹配成功
- 如果匹配成功则重新获取剪贴板内容,进行下一步操作
尾巴
以上介绍的 If Contains 和 Match Text 两套方案,可以帮助你完成大部分剪贴板内容分析。
我已经把许多剪贴板相关的 Workflow 整合成为一个单个的 Clipboard 按钮——每次复制内容之后,只需要无脑按下通知中心插件中的 Workflow 按钮,之后就让它自行识别内容,然后运行不同的 Workflow 吧。
