正则表达式匹配求助:匹配recepten-zoeken/与?之间的内容
解决你的正则匹配问题
嘿,我来帮你搞定这个正则难题!你想要匹配的是recepten-zoeken/和?之间的内容对吧?先看你给的测试URL:
https://localhost:8443/site/recipes/recepten-zoeken/menugang:hoofdgerecht/soort:italiaans/seizoen:winter?Nrpp=24
目标内容就是menugang:hoofdgerecht/soort:italiaans/seizoen:winter,你之前写的正则逻辑有点绕,所以没达到预期效果,我给你两个简单靠谱的方案:
方案一:使用捕获组
这个方法直观易懂,适合新手快速上手:
recepten-zoeken/(.*?)\?
正则解释:
recepten-zoeken/:精准定位你要的起始点,完全匹配这段固定字符串(.*?):非贪婪捕获组,匹配任意字符(直到遇到后面的?就停止),括号里的内容就是你要提取的目标\?:转义问号,因为问号在正则里是特殊元字符,要匹配URL里的字面问号必须加反斜杠
在测试工具里查看捕获组1的内容,就是你想要的部分。
方案二:使用正向断言(无捕获组)
如果不想用捕获组,只想直接匹配到目标内容,可以用正向前后断言:
(?<=recepten-zoeken/).*?(?=\?)
正则解释:
(?<=recepten-zoeken/):反向正向断言,确保当前位置的前面是recepten-zoeken/.*?:同样是非贪婪匹配任意字符(?=\?):正向断言,确保当前位置的后面是?
这个正则会直接返回你需要的内容,不需要额外提取捕获组,更简洁。
小贴士:这里用非贪婪的.*?而不是贪婪的.*是为了避免极端情况(比如URL里意外出现多个问号时,贪婪匹配会一直拿到最后一个问号前的内容),日常用非贪婪更稳妥。
内容的提问来源于stack exchange,提问作者Chris Koster
相关产品推荐
相关产品推荐

