これには正規表現は本当に必要ありません
print epass.split("_")[-1].split(".")[0]
>>> timeit.timeit("epass.split(\"_\")[-1].split(\".\")[0]",setup="from __main__
import epass")
0.57268652953933608
>>> timeit.timeit("regex.findall(epass)",setup="from __main__ import epass,regex
0.59134766185007948
速度は両方とも非常に似ているようですが、分割すると少し速くなります
実際、断然最速の方法は
print epass.rsplit("_",1)[-1].split(".")[0]
(私のシステムでは)長さ100kの文字列で3秒かかりますが、他の方法では35秒以上かかります
最後の _ ではなく 2 番目の _ を実際に意味する場合は、それを行うことができます
epass.split("_",2)[-1].split(".")
ただし、2nd _ が正規表現である場所によっては、同じくらい高速または高速になる場合があります