re.finditer(R或K但不是RP或KP)在一行中

时间:2017-11-16 11:01:01

标签: python regex string python-2.7

我想在子字符串中包含DB::listen(function(query) { .... }); P但不是KPR的索引。现在我可以执行双行代码,但它比使用PK循环for要慢。我希望用if非常快,有可能吗?

re.finditer

proseq = "NSDSECPLSHDGYCLHDGVCMYIEALDKYACNCVVGYIGERCQYRDLKWWELRP" xxx = [m.start() for m in re.finditer('(R|K)', proseq)] yyy = [m.start() for m in re.finditer('(RP|KP)', proseq)] print list(set(xxx)^set(yyy)) OUT> [40, 27, 44, 47] 循环比我的快(并且已经排序),

for

非常欢迎其他快速方式。

1 个答案:

答案 0 :(得分:0)

使用正则表达式(R|K)([^P]|$)。这可以自由地读作“R或K,后跟不是P([^P])的字符,或字符串的末尾($)”。

正则表达式几乎可以为您提供结果而无需另外检查。