You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式技术求助:提取匹配指定首尾的目标字符串

搞定正则匹配:提取指定开头和结尾的URL

嘿,作为正则新手不用发愁,我来一步步帮你实现这个需求!

首先,咱们明确要匹配的规则:必须以https://abcd.sample.com开头,同时以_fs?123456结尾的URL。针对这个需求,我们可以写出精准的正则表达式,再结合代码筛选出符合条件的字符串。

正则表达式解析

直接上能用的正则:

^https:\/\/abcd\.sample\.com.*_fs\?123456$

我来拆解每个部分的作用:

  • ^:锚定字符串的起始位置,确保URL必须从指定前缀开始,不会出现前缀在中间的情况
  • https:\/\/abcd\.sample\.com:转义后的固定前缀。因为.和/在正则里是特殊字符(.匹配任意字符,/是正则的分隔符),所以必须用\转义,才能匹配真实的网址字符
  • .*:匹配任意数量的任意字符(除了换行),用来覆盖前缀和结尾之间的所有内容(比如示例里的/templates/cp/assets/img/1)
  • _fs\?123456:转义后的固定结尾。这里的?是正则的量词(表示0或1次匹配),所以必须转义成\?,才能匹配URL里真实的问号
  • $:锚定字符串的结束位置,确保URL必须以指定结尾结束,不会出现结尾之后还有其他内容的情况

代码示例(常用语言)

JavaScript版本

const urls = [
  'https://sample.com/templates/sample/assets/img/menu.png',
  'https://abcd.sample.com/templates/cp/assets/img/1_fs?123456',
  'https://sample.com/templates/cp/js/plugins/sample/sample.css'
];

// 创建正则对象(注意用双斜杠转义)
const matchRegex = /^https:\/\/abcd\.sample\.com.*_fs\?123456$/;
// 筛选符合条件的URL
const matchedUrls = urls.filter(url => matchRegex.test(url));

console.log(matchedUrls);
// 输出结果:["https://abcd.sample.com/templates/cp/assets/img/1_fs?123456"]

Python版本

import re

urls = [
    'https://sample.com/templates/sample/assets/img/menu.png',
    'https://abcd.sample.com/templates/cp/assets/img/1_fs?123456',
    'https://sample.com/templates/cp/js/plugins/sample/sample.css'
]

# 使用原始字符串r''避免额外转义
match_regex = r'^https://abcd\.sample\.com.*_fs\?123456$'
# 列表推导式筛选匹配项
matched_urls = [url for url in urls if re.match(match_regex, url)]

print(matched_urls)
# 输出结果:['https://abcd.sample.com/templates/cp/assets/img/1_fs?123456']

小提醒

  • 如果你的URL里可能包含换行符(虽然一般不会),可以把.*换成[\s\S]*,这样就能匹配包括换行在内的所有字符
  • 一定要记得转义特殊字符!如果漏掉\,正则会匹配错误的内容(比如.会匹配任意字符,导致前缀匹配到其他类似网址)

内容的提问来源于stack exchange,提问作者victor_gu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:12:49