QRegExp через несколько строк с кавычками
Я хочу сопоставить первую и последнюю кавычку из приведенного ниже примера кода, используя QRegExp:
echo "#!/bin/bash
VAR="Test"
Script content
" > $SCRIPT
Я протестировал несколько различных выражений, наиболее близким из которых я до сих пор являлся, используя QRegExp("\"([^\"]*)\""), которые соответствуют только двум последовательным кавычкам в одной строке (в данном случае "Тестовое задание").
Кто-нибудь может мне с этим помочь?
1 ответ
Я ничего не знаю о Qt, но из того, что я прочитал, QRegExp довольно ограничен в том, что он может делать, и такие вещи, как символы подстановки, могут быть проблематичными. Если возможно, используйте класс QRegularExpression. Я считаю, что следующее будет делать то, что вы хотите, но, вероятно, не с QRegExp. Это будет работать в Perl-подобных движках RegExp:
echo\s+["']((?:[^"']|["'](?!\s*>))+)["']
Для этого нужно выполнить поиск "echo", за которым должен быть хотя бы один пробел, а затем сопоставить "
или же '
(Я предполагаю, что можно использовать любой из них), за которым следует что-либо, кроме кавычек, или что-либо, что не является кавычкой >
, по крайней мере, один раз и столько раз, сколько это возможно, а затем он соответствует закрывающей кавычке.
Важно понимать, что движку регулярных выражений нужен какой-то способ отличить начальную цитату и конечную. Я предположил, что стартовой цитате всегда предшествует echo
и за конечной цитатой всегда следует >
, Возможно, вам придется настроить вещи, если эти предположения неверны.