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

如何提取字符串中所有后接字符'ST'的符合条件数字

提取紧跟"ST"后缀数字的实现方案

核心思路是通过正则表达式精准匹配「数字+间隔空白+独立ST标识」的规则,捕获数字分组即可得到目标结果,不会误匹配无对应数字的ST、或无ST后缀的孤立数字。

匹配规则说明

基础正则匹配模式:/(\d+)\s+ST\b/
各部分含义:

  • (\d+):捕获1位及以上连续数字,是最终要提取的目标内容
  • \s+:匹配数字和ST之间的1个及以上空白字符,兼容空格、制表符等常见间隔
  • ST\b:通过单词边界匹配独立的大写ST字符,避免误匹配ST作为其他单词前缀的场景(比如123Start不会被命中)

测试样例

待处理原始字符串:

$str = '104 ST Lorem 104 ipsum (dolor) sit ST, 2000 ST adipiscing 2 2 ST elit.'

预期提取结果:104、2000、2,分别对应片段104 ST、2000 ST、2 ST中的数字值。

常见语言实现

PHP

$str = '104 ST Lorem 104 ipsum (dolor) sit ST, 2000 ST adipiscing 2 2 ST elit.';
preg_match_all('/(\d+)\s+ST\b/', $str, $matches);
$res = $matches[1];
var_dump($res);
// 输出:array(3) { [0]=> string(3) "104" [1]=> string(4) "2000" [2]=> string(1) "2" }

Python

import re
s = '104 ST Lorem 104 ipsum (dolor) sit ST, 2000 ST adipiscing 2 2 ST elit.'
res = re.findall(r'(\d+)\s+ST\b', s)
print(res)
# 输出:['104', '2000', '2']

JavaScript

const str = '104 ST Lorem 104 ipsum (dolor) sit ST, 2000 ST adipiscing 2 2 ST elit.'
const reg = /(\d+)\s+ST\b/g
const res = []
let match
while ((match = reg.exec(str)) !== null) {
  res.push(match[1])
}
console.log(res)
// 输出:['104', '2000', '2']

适配调整说明

可根据实际业务需求调整正则规则:

  • 如果要求数字和ST必须紧挨着、不能有间隔,删除模式里的\s+即可,模式改为/(\d+)ST\b/
  • 如果需要兼容小写st、大小写混合的St/sT场景,给正则增加不区分大小写修饰符即可:PHP模式改为/(\d+)\s+ST\b/i、Python增加flags=re.I参数、JS正则改为/(\d+)\s+ST\b/gi
  • 如果需要匹配带小数的数字,把\d+替换为\d+(?:\.\d+)?即可兼容整数、小数场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:18:26