【发布时间】:2019-12-12 16:12:59
【问题描述】:
我正在尝试将文件名中的三个字母与 1000Genomes 项目匹配,并且仅匹配来自 ethnicity_lists/PEL.txt 之类的字符串的三个字母,我应该只得到 PEL。字符串的其余部分无关紧要。
my $p1-label = @populations[$p1-index].match(/^ethnicity_lists\/(<[A..Y]>)**3\.txt$/);
问题在于$p1-label 包含捕获组之外的整个字符串。
我在<[A..Y]> 周围加上括号,以强调我只想要那个组。
浏览https://docs.perl6.org/routine/match
我尝试尽可能具体以防止任何可能的错误,这就是我包含整个字符串的原因。
如果我进行 Perl5 风格的匹配:
if @populations[$p1-index] ~~ /^ethnicity_lists\/(<[A..Y]>)**3\.txt$/ {
put $0.join(''); # strange that this outputs an array instead of a string
}
我已经尝试了match 方法的所有副词,但没有一个能完成必要的工作。
如何将match 方法限制为仅正则表达式中的捕获组?
【问题讨论】: