Chciałbym dopasować ciągi znaków, używając modułu regex Pythons.Powtórzenie języka Python powolne, gdy spacje w ciągach znaków
W moim przypadku chcę sprawdzić, czy ciągi rozpoczynają się, kończą i składają się z wielkich liter połączonych przez "_". Jako przykład można podać następujący ciąg: "MY_HERO2". Następujące ciągi nie są ważne: "_MY_HREO2", "MY HERO2", "MY_HERO2_"
Aby sprawdzić poprawność ciąg używam tego kodu:
import re
my_string = "MY_HERO"
p = re.compile("^([A-Z,0-9]+_??)+[A-Z,0-9]$")
if p.match(my_string):
print "validated"
Więc jaki jest mój problem? Sprawdzanie poprawności długich ciągów zawierających białe spacje jest bardzo, bardzo powolne. Jak mogę tego uniknąć? Czy mój wzorzec jest zły? Jaki jest powód takiego zachowania?
Oto niektóre numery:
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
Dzięki za anwsers i odpowiedzi wyprzedzeniem. :-) Paul
Łańcuch nie może rozpocząć lub zakończyć znakiem podkreślenia? i dlaczego używasz przecinków ',' w swoich klasach postaci, czy są one dozwolone? –
Wygląda jak przypadek złego wycofywania. – Matthias