如何用正则表达式匹配let/var/func等指定表达式后的第一个单词
多关键字后首个单词匹配正则方案
原有正则局限
当前编写的正则仅能匹配let关键字后的第一个单词,对应代码如下:
(?<=\blet\s)(\w+)
需求说明
需要匹配Swift代码中let、var、func三个指定声明关键字之后的第一个单词,待匹配测试代码如下:
let name: String var age: Int func foo() { //...
期望得到的匹配结果:
name age foo
修正后正则代码
(?<=\b(?:let|var|func)\s)(\w+)
匹配逻辑
- 保留原正则的单词边界
\b、关键字后空白符\s匹配规则,避免误匹配嵌入在其他字符中的非完整关键字 - 将后视断言中固定匹配的
let替换为非捕获组(?:let|var|func),实现三个目标关键字的同时匹配 - 捕获组
(\w+)会提取关键字后紧跟的连续单词字符,直接返回目标标识符结果
内容的提问来源于stack exchange,提问作者Hassan Taleb
相关产品推荐
相关产品推荐

