regexr.com/3br05
product-spec есть в первой строчке
product-minicard в последней
А если убрать переносы строк то всё работает regexr.com/3br08
Почему? У меня же модификатор m стоит! Ну и как исправить?
Вы сами ответили на свой вопрос - в строке есть переносы. Вам нужно примерно такое: product-spec.*\n?.*product-minicard
Модификатор m влияет на работу ^ и $ (на других языках поведение может отличаться), прочитайте про это в документации.
Непонятно в данном случае почему (.*?) не видит переносы, вашу пробовал, она видит один перенос, а как сделать "звёздочку" действительно на любые символы, в т.ч. переносы строки