如何使用正则表达式提取URL中blabla后两个斜杠之间的字符串
问题原因
你之前使用的([^/]+$)正则的作用是匹配URL末尾最后一个斜杠后的所有非斜杠字符,只能拿到路径的最后一段(也就是示例中的lalaalala),自然无法获取到中间的目标段。
可行解法
由于目标字符串固定出现在blabla之后的下一个路径段,直接使用以下正则即可实现匹配提取:
/blabla/([^/]+)
正则逻辑说明
- 先精准匹配固定前缀
/blabla/,直接定位到目标段的起始位置 - 捕获组
([^/]+)会匹配/blabla/之后所有连续的非斜杠字符,也就是你需要的ab,遇到下一个斜杠就自动停止匹配
常用语言实现示例
Python示例
import re url = "HTTPS://www.google.com/blabla/ab/what2/what3/lalaalala" match = re.search(r"/blabla/([^/]+)", url) if match: target = match.group(1) print(target) # 输出 ab
JavaScript示例
const url = "HTTPS://www.google.com/blabla/ab/what2/what3/lalaalala"; const match = url.match(/\/blabla\/([^/]+)/); if (match) { const target = match[1]; console.log(target); // 输出 ab }
抗干扰优化方案
如果你的URL里blabla可能出现在查询参数、锚点或者域名部分,可以先提取URL的纯路径部分再做匹配,避免误匹配:
from urllib.parse import urlparse import re url = "HTTPS://www.google.com/blabla/ab/what2/what3/lalaalala?param=test/blabla" path = urlparse(url).path # 提取到纯路径:/blabla/ab/what2/what3/lalaalala match = re.search(r"/blabla/([^/]+)", path) if match: target = match.group(1) print(target) # 依然正确输出 ab,不会被查询参数里的blabla干扰
内容的提问来源于stack exchange,提问作者Justaskingaq
相关产品推荐
相关产品推荐

