我有一个要搜索的字符串列表,忽略了连续出现4次以上的包含A或G字符的任何字符串。例如,我想忽略诸如TCAAAATC或GCTGGGGAA之类的字符串。

我试过了:

unless ($string =~ m/A{4,}?/g || m/G{4,}?/g)
{
    Do something;
}

但是我收到一条错误消息“在模式匹配(m //)中使用未初始化的值”。

任何建议,将不胜感激。

最佳答案

通过写

|| m/G{4,}?/g

您正在针对此正则表达式隐式测试$_。但是,$_尚未初始化,因此会出现错误。


unless ($string =~ m/A{4}/ || $string =~ m/G{4}/)

相反(请注意对正则表达式的简化),或者作为单个表达式,
unless ($string =~ m/A{4}|G{4}/)

关于perl - 模式匹配连续字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18326465/

10-12 19:47
查看更多