Я ничего не знаю о Qt, но из того, что я прочитал, QRegExp довольно ограничен в своих возможностях, и такие вещи, как символы подстановки, могут быть проблематичными. Если возможно, используйте класс QRegularExpression. Я считаю, что следующее будет делать то, что вы хотите, но, вероятно, не с QRegExp. Это будет работать в Perl-подобных двигателях RegExp:
echo\s+["']((?:[^"']|["'](?!\s*>))+)["']
Для этого нужно выполнить поиск «echo», за которым следует хотя бы один пробел, затем указать либо "
, либо '
(я полагаю, можно использовать любой из них), за которым следует что-либо, что не кавычка или все, что является кавычкой , а не , за которым следует >
, по крайней мере, один раз и столько раз, сколько это возможно, а затем оно соответствует закрывающей кавычке.
Важно понимать, что движку регулярных выражений нужен какой-то способ различения, что является начальной кавычкой, а какой - окончанием. Здесь я предположил, что перед начальной кавычкой всегда стоит echo
, а за конечной кавычкой всегда следует >
. Возможно, вам придется настроить вещи, если эти предположения неверны.