Perl如何截取时间字符串指定片段并存储首个+-分隔符
正确实现代码
用正则捕获组可以同时完成分隔符存储和目标内容提取,适配你的所有匹配规则:
my $time1 = "2021-01-02T11:12:00+01:00"; # 正则匹配逻辑: # 第1捕获组([+-]):匹配你需要的+/-分隔符 # 第2捕获组(\d+):匹配分隔符后到最后一个:之前的数字内容 # 正向预查(?=:[^:]*$):定位字符串中最后一个:的位置,不占用匹配字符 if ($time1 =~ /([+-])(\d+)(?=:[^:]*$)/) { my $delimiter = $1; # 存储匹配到的分隔符 my $result = $2; # 你预期的输出结果 print $result; }
运行上述代码输出为01,变量$delimiter会存储本次匹配到的分隔符+。如果是带负时区偏移的时间字符串(例如2021-01-02T11:12:00-08:00),代码会自动捕获分隔符-,输出结果08。
原有代码问题说明
你使用的split写法只能按+分割字符串,没有匹配到最后一个:的逻辑,也无法捕获分隔符本身,因此无法满足需求。
内容的提问来源于stack exchange,提问作者Darwick
相关产品推荐
相关产品推荐

