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

Perl如何从指定格式输入字符串中提取数字与ID子串

实现方案

你可以直接通过正则捕获组完成提取,天然兼容字符串中任意位置的多余空格,不需要额外做字符串裁剪操作。

示例输入格式

(1, 'c21bd4d76fe97759aa27a0c99bff6710')
注:括号前后、逗号前后、字符串首尾可能存在不定数量的多余空格

可直接运行的代码

my $text = "(1, 'c21bd4d76fe97759aa27a0c99bff6710')   ";
my ($row_id, $id);

# 正则匹配提取,自动跳过所有多余空白
if ($text =~ /^\s*\(\s*(\d+)\s*,\s*'([a-f0-9]+)'\s*\)\s*$/) {
    $row_id = $1;
    $id = $2;
    print "$row_id $id\n";
}

运行输出:1 c21bd4d76fe97759aa27a0c99bff6710

正则规则说明

  • 所有\s*用来匹配对应位置任意数量的空白字符(空格、制表符都可兼容),不管对应位置有没有空格、有多少空格都不影响匹配结果
  • (\d+)是第一个捕获组,提取括号内开头的数字ID
  • ([a-f0-9]+)是第二个捕获组,提取单引号包裹的十六进制格式ID
  • 匹配逻辑自带格式校验,如果输入字符串不符合(数字, 'ID')的基础结构,不会错误赋值,避免脏数据进入后续逻辑

对比你之前用split加固定偏移substr的方案,正则方案不会因为空格位置变化出现截取偏移的问题,鲁棒性更强。如果你的ID固定是32位MD5值,还可以把第二个捕获组改成([a-f0-9]{32}),校验会更严格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:18:28