Я пытаюсь выяснить проблему с регулярным выражением.
Я использую это регулярное выражение с preg_match_all для большой многострочной строки:
/(\{(if|while|function|loop|\$|#)(.+)\})/
Этов настоящее время работает для сопоставления всего текста, который начинается с {и заканчивается}, таким как {$ test} или {$ function = "test ()"}
Однако, если одна строка в строке содержит два совпадающих блока,регулярное выражение возвращает всю строку, например:
{$ value.url} "class =" link "> {$ value.title}
Я не могу понять, как сделатьрегулярное выражение не выполняет «жадное» сопоставление с (. +). Причина, по которой у меня есть (. +), заключается в том, что между двумя скобками {}. * 1012 может быть любой символ / число / знак подчеркивания / точка / цитата / пробел.*
Может ли кто-нибудь мне помочь?