Perl:我如何利用正则表达式匹配?

Ori*_*ion 5 regex perl capitalization

我正在使用这个正则表达式来查找基因组中的模式.

$string =~ /(?i)a+t?|(?i)t+/g
Run Code Online (Sandbox Code Playgroud)

为了使输出更容易阅读,我想修改它,以便将匹配的任何东西大写为4到7个字符长.它也不应该弄乱$+[0]$-[0]变量.

我输出的方式是根据'$ + [0]'和'$ + [0]'从较大的字符串文件中获取一个子字符串我不想打印出正在打印的正则表达式匹配大量的校正器,我想让比赛脱颖而出.

如果你真的需要看到我正在研究的代码,你可以在这里得到它

Joe*_*ger 11

通过适当的测试(对于你的匹配和长度(可能需要像{4,7}这样的量词的字符组),没有示例内容,这是留给你的)你可以使用一个eval替代s/(match)/uc($1)/eg,它将获取匹配的字符串并使其成为可能大写然后用替换替换匹配.

一如既往地阅读更多 perldoc perlre perldoc perlreref perldoc perlretut

作为旁注,我一直想知道基因组是否是一个很好的候选人Regexp::Grammars

  • 不需要"评估替代".s ///的替换部分是双引号,所以你可以使用反斜杠转义而不需要s /// e:s /(匹配)/\U $ 1/g (5认同)