如何用单条正则表达式提取斜杠分隔的前三段目标路径内容
正则解决方案
你可以直接使用以下单条正则实现两类场景的统一提取:
^([^/]+/[^/]+/[^/]+)(?=[/:])
匹配逻辑说明
[^/]+匹配单段不含斜杠的路径片段,相比非贪婪匹配范围更精准,不会出现溢出问题- 连续三组
[^/]+用斜杠拼接,刚好对应需要提取的前三段路径 - 末尾的
(?=[/:])为正向肯定预查,要求匹配内容的下一个字符只能是斜杠(对应存在第四段路径的第一类场景)或者冒号(对应仅含三段路径的第二类场景),既不会把后续路径、冒号后缀纳入捕获结果,也能同时适配两类场景的终止条件
验证结果
对两类样本测试均符合预期:
- 输入
apple/banana/orange/cherries:Z1234,捕获组1输出为apple/banana/orange - 输入
avocado/cantaloupe/watermelon:Y5678,捕获组1输出为avocado/cantaloupe/watermelon
内容的提问来源于stack exchange,提问作者Allentine
相关产品推荐
相关产品推荐

