如何提取字符串中所有后接字符'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.
相关产品推荐
相关产品推荐

