str_pad
из пакета stringr
является альтернативой.
anim = 25499:25504
str_pad(anim, width=6, pad="0")
Вы хотите использовать опцию DOTALL
для соответствия друг другу. Из doc.python.org :
re.DOTALL
Сделайте '.' специальный символ соответствует любому персонажу вообще, включая новую строку; без этого флага ". будет соответствовать чему угодно, кроме новой строки.
blockquote>Демо:
In [1]: import re In [2]: s="""shantaram is an amazing novel. It is one of the best novels i have read. the novel is written by gregory david roberts. He is an australian""" In [3]: print re.findall('^.*?the',s,re.DOTALL)[0] shantaram is an amazing novel. It is one of the
Используйте это регулярное выражение,
re.search("shantaram[\s\S]*?the", string)
вместо
re.search("shantaram[\s\S]*the", string)
Единственное отличие - «?». Используя «?» (Например, * ?, +?), Вы можете предотвратить самое длинное совпадение.
Решение, не использующее регулярное выражение:
from itertools import takewhile
def upto(a_string, stop):
return " ".join(takewhile(lambda x: x != stop and x != "\n".format(stop), a_string))