Pythons regexモジュールを使用して文字列を一致させたいと思います。Python regexは文字列の空白のときに遅くなります
私の場合、文字列の開始、終了、および大文字の組み合わせが "_"であることを確認したいと思います。たとえば、「MY_HERO2」という文字列が有効です。次の文字列は有効ではありません。 "_MY_HREO2"、 "MY HERO2"、 "MY_HERO2_"
が、私はこのコードを使用する文字列を検証するには:
import re
my_string = "MY_HERO"
p = re.compile("^([A-Z,0-9]+_??)+[A-Z,0-9]$")
if p.match(my_string):
print "validated"
をだから私の問題は何ですか?空白文字を含む長い文字列の検証は非常に遅いです。どうすればこれを避けることができますか?私のパターンは間違っていますか?この行動の理由は何ですか?事前にごanwsersと応答のための
MY_HERO2 --> 53 ms
MY_SUPER_GREAT_UNBELIEVABLE_HERO --> 69 microseconds
MY_SUPER_GREAT_UNBELIEVABLE HERO --> 223576 microseconds
MY_SUPER_GREAT_UNBELIEVABLE_STRONG_HERO --> 15 microseconds
MY_SUPER_GREAT_UNBELIEVABLE_STRONG HERO --> 979429 microseconds
ありがとう:
は、ここではいくつかの数字です。 :-) ポール
文字列が開始またはアンダースコアで終了することはできませんか?そしてなぜあなたは文字クラスでカンマ '、'を使用していますか?許可されていますか? –
悪いバックトラッキングのように見えます。 – Matthias