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

如何使用正则表达式(regexp)提取Bounding Box文本中的坐标数字?

当然可以用正则表达式实现,这比手动拆分高效太多了!

针对你给出的Bounding box文本,正则表达式能精准提取出目标数字,而且代码非常简洁。这里给你两种实用的方案:

方案1:精准匹配Bounding box格式(推荐)

如果文本格式固定,比如总是以(Xmin, Ymin) - (Xmax, Ymax) : (数字, 数字) - (数字, 数字)结尾,我们可以写一个完全匹配该结构的正则,直接提取四个目标数字:

import re

# 你的原始文本
bbox_text = 'Bounding box for object 1 "PASpersonWalking" (Xmin, Ymin) - (Xmax, Ymax) : (160, 182) - (302, 431)'

# 正则模式:匹配括号里的四个数字
pattern = r'\((\d+), (\d+)\) - \((\d+), (\d+)\)$'
match_result = re.search(pattern, bbox_text)

if match_result:
    # 提取四个数字并转成整数类型
    xmin, ymin, xmax, ymax = map(int, match_result.groups())
    print(f"提取结果:Xmin={xmin}, Ymin={ymin}, Xmax={xmax}, Ymax={ymax}")
    # 输出:提取结果:Xmin=160, Ymin=182, Xmax=302, Ymax=431

这个方案的好处是不会受到文本中其他数字干扰(比如这里的object 1里的数字1),匹配精度更高。

方案2:提取所有数字后筛选

如果文本格式偶尔有变化,但目标数字始终是最后四个整数,也可以直接提取所有数字再取后四个:

import re

bbox_text = 'Bounding box for object 1 "PASpersonWalking" (Xmin, Ymin) - (Xmax, Ymax) : (160, 182) - (302, 431)'

# 提取所有连续数字
all_numbers = re.findall(r'\d+', bbox_text)
# 取最后四个并转成整数
target_numbers = list(map(int, all_numbers[-4:]))

print(f"提取结果:{target_numbers}")
# 输出:提取结果:[160, 182, 302, 431]

这种写法更灵活,适合格式不太固定的场景。

对比手动拆分字符串(比如按空格、逗号、括号切割再筛选),正则表达式只需要几行代码就能完成,逻辑更清晰,后期维护也更简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:00:08