В чем разница между/(a +) + c/и/(a +) c/in re модулем? Я проверил, сколько времени потребуется для выполнения. Была большая разница. Я хочу знать, почему существует большая разница. Я ввел этот образец в форму онлайн-тестера регулярных выражений, но я не понял, что происходит. Пожалуйста, скажите мне слова.жадный и жадный в модуле
import re
from time import clock
def test(f, *args, *kargs):
start = now()
f(*args, *kargs)
print("The function %s lasted: %f" % (f.__name__, now() - start))
def catastrophic1(n):
print("Testing with %d characters" % n)
pat = re.compile("(a+)+c")
text = "%s" % 'a' * n
pat.search(text)
def catastrophic2(n):
print("Testing with %d characters" % n)
pat = re.compile("(a+)c")
text = "%s" % 'a' * n
pat.search(text)
for n in range(13, 20):
test(catastrophic1, n)
for n in range(13, 20):
test(catastrophic2, n)
Почему у вас есть '/ (a +) + c /' в вашем вопросе и '(a +) + c' в вашем коде? Если это ошибка, отредактируйте свой вопрос. –
Использовать [timeit] (https://docs.python.org/2/library/timeit.html) в качестве предпочтения к часовому коду времени ... – dawg
@ user5061 Если он не подходит, то не будет разницы – q2ven