如何用正则表达式提取字符串第一个与最后一个斜杠之间的子串
路径中间段提取正则解决方案
你原有正则/^(.*?).([^\/]*)$/存在两个核心问题:
- 没有将
.替换为斜杠匹配规则,.会匹配任意字符,无法精准定位斜杠位置 - 没有限定第一个斜杠的匹配边界,因此只能匹配到最后一个斜杠前的全部内容,无法排除第一个斜杠前的前缀
方案1:捕获组方案(兼容性最好,所有正则引擎支持)
正则表达式:^[^/]+/(.*)/[^/]+$
规则说明:
^[^/]+:匹配从字符串开头到第一个斜杠之前的所有非斜杠字符,即示例中的just前缀/:匹配路径中第一个斜杠(.*):贪婪匹配内容,自动延伸到最后一个符合后续规则的位置,捕获的内容就是你需要的中间段/[^/]+$:匹配最后一个斜杠以及之后到字符串结尾的所有非斜杠字符,即示例中的file.txt后缀
使用效果:
对示例字符串just/the/path/to/file.txt执行匹配后,取第一个捕获组的内容即可得到the/path/to。
方案2:零宽断言方案(无需取捕获组,需正则引擎支持后顾/前瞻断言)
正则表达式:(?<=/).*(?=/)
规则说明:
(?<=/):后顾断言,限定匹配内容的前一个字符是斜杠.*:贪婪匹配所有字符,自动延伸到最后一个符合后续规则的位置(?=/):前瞻断言,限定匹配内容的后一个字符是斜杠
使用效果:
对示例字符串just/the/path/to/file.txt执行匹配后,直接得到匹配结果the/path/to。
内容的提问来源于stack exchange,提问作者user3142695
相关产品推荐
相关产品推荐

