惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
S
SegmentFault 最新的问题
Jina AI
Jina AI
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
B
Blog
博客园 - 【当耐特】
博客园 - Franky
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 叶小钗
Last Week in AI
Last Week in AI
Engineering at Meta
Engineering at Meta

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Workflow | 如果只会一个正则表达式... - 少数派
2017-01-29 · via 少数派

「正则表达式」在抓取文本中指定字符串时非常有用,你可以理解为高级版通配符,应用的地方很多。网上优秀的正则学习资料也已经很多了,非常值得学习。这篇文章主要是写给没有接触过「正则表达式」,想利用Workflow完成某些处理,但又比较懒的朋友。因为我只讲一个,我个人觉得最有用的一个表达式。

示范问题

在银行买了一些美元基金,通过登陆App或者网站看基金涨跌情况挺麻烦。所以可以利用workflow一键查看自己的基金涨跌情况。

解决思路

  1. 正则匹配,提取 基金当前美金价格
  2. 正则匹配,提取 银行当前美金汇率;(当然也可调用相关开放的API)
  3. 计算基金当前净值;

1.png2.png

正则部分详解

  [/s/S]*?

这是我最常用的一个表达式,非贪婪匹配任意字符串(包括换行符),将这个表达式放在()内,()的前后是定位用的、固定不变的字段。()是用来在「Get Group from Matched Text」中仅输出匹配的变动字段。

\s 空白符
\S 非空白符
[\s\S]任意字符
[\s\S]* 0个到任意多个字符 [\s\S]*? 0个到任意多个字符(非贪婪模式,即最短匹配情况)

更多正则语法可以搜索了解,再次推荐值得一学,半小时即可。

抓取美金汇率

在流程中可以看到抓取美金汇率的时候,用了两次正则匹配,而抓取基金价格只用了一次。因为在美金汇率的HTML代码中,有重复的标签,所以先用一次缩小范围并定位到第10组数据,第二次再提取美金的汇率价格:

第一个「正则表达式」:([\s\S]*?)代表div内的HTML代码

<div class="cT-divTableRow">([\s\S]*?)</div>

以上表达式会匹配到所有币种的表格HTML,共12组。利用「Get  Item from List」输出第10组(其实是11,Index值为10)。

IMG_4856.PNG

再继续对上面得到的文本继续正则匹配抓取,继续用上面那个公式匹配,改掉小括号前后的字段

第二个正则表达式:([\s\S]*?)代表汇率数值

<span class="cT-divTableDateColumn" style="width:90px;">([\s\S]*?)</span>

这里也会匹配到两组字符串(买入价、卖出价):

先用「Get Group from Matched Text」仅输出数值部分,否则会输出带HTML标签的整个文本;

再用「Get  Item from List」获取第一个数字(买入价);

抓取基金价格

因为前后的HTML标签唯一,这里只需要一次正则匹配即可。

([\s\S]*?)代表当前净值数值

<span id="MainContent_QuickTakeMainContent_QuickTakeForm_NAVText">([\s\S]*?)</span>

依然用「Get Group from Matched Text」仅输出匹配的数值部分;

其他

  [/s/S]*?能抓取的数据的很多,但是要注意的一个坑就是()前后的固定、定位字符,如果存在? [ ] 等特殊字符时,需在字符前面加反斜杠字符 (\)转义,详细特殊字符见此处