如何从文件名中提取独立的3位同位素编号(223/224)?
Perl正则提取独立同位素编号223/224的解决方案
核心思路是确保目标数字223或224是独立的3位数字,而非长数字串的片段,这可以通过Perl的正则负向断言实现:
关键正则表达式
/(?<!\d)(223|224)(?!\d)/
(?<!\d):负向回顾断言,匹配位置的前面不能是数字,避免目标数字成为长数字的后缀(比如202223里的末尾223)(223|224):精确匹配目标同位素编号(?!\d):负向前瞻断言,匹配位置的后面不能是数字,避免目标数字成为长数字的前缀(比如223123里的开头223)
实用Perl子例程示例
sub extract_isotope { my $filename = shift; # 匹配独立的223/224,忽略长数字串中的片段 return $1 if $filename =~ /(?<!\d)(223|224)(?!\d)/; return undef; # 无匹配时返回undef }
测试场景验证
- 文件名
test_224_20230522.txt:匹配224,不会误抓日期里的数字 - 文件名
sample223_2022231.csv:匹配223,忽略日期串2022231中的223片段 - 文件名
223data_123224.log:同时存在时优先匹配第一个出现的独立编号(这里是223),如果需要匹配所有可改用g修饰符
内容的提问来源于stack exchange,提问作者David Kaiser
相关产品推荐
相关产品推荐

