我尝试使用正则表达式从字符串中提取一个数字以及与该数字相等的字符数。这用于分析samtools mpileup
的堆积摘要输出(请参见here)。我正在做的是Python。
例如,假设我有以下字符串:.....+3AAAT.....
我试图从字符串中提取+3AAA
,留给我们:.....T.....
请注意,T
仍然存在,因为我只想提取3个字符(因为字符串指示应该提取3个字符)。
我可以这样做:re.sub("\+[0-9]+[ACGTNacgtn]+", "", ".....+3AAAT.....")
但这也会删除T
,留给我们:..........
有没有一种方法可以使用字符串中的信息来调整正则表达式中的模式?有很多方法可以使用正则表达式来实现这一点,但是如果有一种方法可以使用正则表达式来实现,我宁愿使用这种方法。
2条答案
按热度按时间lrpiutwd1#
你可以传递一个
lambda
到re.sub()
:试试看:
2skhul332#
有一个(不明智的)纯粹基于regex的解决方案,分别匹配每个可能的数字:
这使得
regex
代表下面的怪物。(
{0}
和{1}
有点傻,但可能不值得花力气去修复它们。)