如何利用Regex从给定链接中提取目标数值1425573?
正则捕获URL中的目标数值方案
没问题,我来帮你搞定这个正则捕获需求!先分析下你的URL结构:目标数值1425573位于固定路径段/summary/之后,要么跟着查询参数的起始符?,要么就是路径的末尾。基于这个规律,我们可以写出精准的正则表达式,同时适配有没有查询参数的场景。
核心正则表达式
/summary/(\d+)(?:\?|$)
正则各部分解释:
/summary/:精准匹配固定字符串,帮我们定位到目标数值的前置标识(\d+):捕获组,匹配1个或多个数字(也就是你要的1425573),括号会把这部分内容单独提取出来(?:\?|$):非捕获组,匹配要么是查询参数的?,要么是字符串的结尾,确保我们只拿到纯数字ID,不会附带后面的参数内容
不同编程语言的实现示例
JavaScript
const url = "https://mytrip.com/plan#/pro/summary/1425573?as=1"; const regex = /\/summary\/(\d+)(?:\?|$)/; // 注意转义斜杠 const matchResult = url.match(regex); if (matchResult) { const targetId = matchResult[1]; console.log(targetId); // 输出:1425573 }
Python
import re url = "https://mytrip.com/plan#/pro/summary/1425573?as=1" pattern = r'/summary/(\d+)(?:\?|$)' match_result = re.search(pattern, url) if match_result: target_id = match_result.group(1) print(target_id) # 输出:1425573
Java
import java.util.regex.Matcher; import java.util.regex.Pattern; public class UrlIdExtractor { public static void main(String[] args) { String url = "https://mytrip.com/plan#/pro/summary/1425573?as=1"; Pattern pattern = Pattern.compile("/summary/(\\d+)(?:\\?|$)"); // Java中需要转义斜杠和问号 Matcher matcher = pattern.matcher(url); if (matcher.find()) { String targetId = matcher.group(1); System.out.println(targetId); // 输出:1425573 } } }
额外说明
这个正则不仅能匹配你给出的带查询参数的URL,就算URL是https://mytrip.com/plan#/pro/summary/1425573(没有后面的?as=1),也能正确捕获到目标数值,兼容性很强。
内容的提问来源于stack exchange,提问作者EricSSH
相关产品推荐
相关产品推荐

