Python - уточнение поиска в регулярном выражении [дубликат]

str_pad из пакета stringr является альтернативой.

anim = 25499:25504
str_pad(anim, width=6, pad="0")
10
задан Chris Seymour 22 September 2013 в 12:24
поделиться

3 ответа

Вы хотите использовать опцию DOTALL для соответствия друг другу. Из doc.python.org :

re.DOTALL

Сделайте '.' специальный символ соответствует любому персонажу вообще, включая новую строку; без этого флага ". будет соответствовать чему угодно, кроме новой строки.

Демо:

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
24
ответ дан Chris Seymour 18 August 2018 в 17:02
поделиться

Используйте это регулярное выражение,

re.search("shantaram[\s\S]*?the", string)

вместо

re.search("shantaram[\s\S]*the", string)

Единственное отличие - «?». Используя «?» (Например, * ?, +?), Вы можете предотвратить самое длинное совпадение.

5
ответ дан lancif 18 August 2018 в 17:02
поделиться

Решение, не использующее регулярное выражение:

from itertools import takewhile
def upto(a_string, stop):
    return " ".join(takewhile(lambda x: x != stop and x != "\n".format(stop), a_string))
0
ответ дан rlms 18 August 2018 в 17:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: