Регулярный выражения, объясните строку. Python
c = re.findall("(?s)—(.*?)[—.?]", a)
я знаю, что оно делает, берёт все данные, которые находятся между символами — и —.? , но вот как именно работает эта строка совсем непонятно.
Ответы (1 шт):
(?s)—(.*?)[—.?]
(?s)— инлайн-модификатор/флаг, который говорит, что далее в паттерне воспринимать.как любой символ, включая перевод строки—— начинаем с символа тире(.*?)— 0+ любых символов (за счёт предыдущего флага) в lazy-режиме, т.е. как можно меньше[—.?]— заканчиваем одним из трёх символов: тире, точка, вопросительный знак (в таком контексте.воспринимается именно как точка, а не как любой символ, несмотря на флаг)
Из-за наличия флага получаем, например, матч тут:
wombtowm — rgr
tgw — wtbwrbtwtr
Из-за lazy-режима получаем, например, именно такой матч тут:
wombtowm — rgr
tgw — tgw — wtbwrbtwtr