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

如何使用Regex提取指定格式字符串列表中的gb2等子串?

提取目标子串的正则解决方案

先明确咱们要抓的核心内容:这些gb2、de7这类子串,都是vps-前缀之后、.nsa.drw后缀之前的「两个小写字母+数字」组合。下面直接上可落地的正则方案和用法:

核心正则表达式

用这个正则就能精准捕获目标内容:

vps-([a-z]{2}\d+)

正则拆解(帮你理解为什么这么写)

  • vps-:匹配固定前缀,确保我们定位到正确的位置,不会误抓其他类似结构的内容
  • ():捕获组,专门用来提取我们真正需要的子串
  • [a-z]{2}:精准匹配两个小写英文字母(对应gb、de、jp这类部分)
  • \d+:匹配一个或多个数字(对应后面的2、7、3这类部分)

实际使用示例(主流语言)

Python 实现

import re

# 你的原始字符串列表
target_strings = [
    "Heartbeats::hype-wss://vps-gb2.nsa.drw:7026",
    "Heartbeats::hype-wss://vps-de7.nsa.drw:7026",
    "Heartbeats::hype-wss://vps-gb3.nsa.drw:7006",
    "Heartbeats::hype-wss://vps-de2.nsa.drw:7043",
    "Heartbeats::hype-wss://vps-jp2.nsa.drw:7060",
    "Heartbeats::hype-wss://vps-jp2.nsa.drw:7071",
    "Heartbeats::hype-wss://vps-de3.nsa.drw:7055",
    "Heartbeats::hype-wss://vps-de3.nsa.drw:7066",
    "Heartbeats::hype-wss://vps-gb2.nsa.drw:7005"
]

# 编译正则(提升重复匹配效率)
pattern = re.compile(r'vps-([a-z]{2}\d+)')
# 批量提取结果
extracted_results = [pattern.search(s).group(1) for s in target_strings if pattern.search(s)]

print(extracted_results)
# 输出:['gb2', 'de7', 'gb3', 'de2', 'jp2', 'jp2', 'de3', 'de3', 'gb2']

JavaScript 实现

const targetStrings = [
    "Heartbeats::hype-wss://vps-gb2.nsa.drw:7026",
    "Heartbeats::hype-wss://vps-de7.nsa.drw:7026",
    "Heartbeats::hype-wss://vps-gb3.nsa.drw:7006",
    "Heartbeats::hype-wss://vps-de2.nsa.drw:7043",
    "Heartbeats::hype-wss://vps-jp2.nsa.drw:7060",
    "Heartbeats::hype-wss://vps-jp2.nsa.drw:7071",
    "Heartbeats::hype-wss://vps-de3.nsa.drw:7055",
    "Heartbeats::hype-wss://vps-de3.nsa.drw:7066",
    "Heartbeats::hype-wss://vps-gb2.nsa.drw:7005"
];

const regex = /vps-([a-z]{2}\d+)/;
const extractedResults = targetStrings.map(str => {
    const match = str.match(regex);
    return match ? match[1] : null;
}).filter(item => item !== null);

console.log(extractedResults);
// 输出:["gb2", "de7", "gb3", "de2", "jp2", "jp2", "de3", "de3", "gb2"]

扩展说明

如果后续你的字符串格式有变化(比如字母数量从2个变成3个),只需要调整正则里[a-z]{2}的数字即可,比如改成[a-z]{3}就能匹配三个字母的前缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:12