QRegExp через несколько строк с кавычками

Я хочу сопоставить первую и последнюю кавычку из приведенного ниже примера кода, используя QRegExp:

echo "#!/bin/bash

VAR="Test"
Script content

" > $SCRIPT

Я протестировал несколько различных выражений, наиболее близким из которых я до сих пор являлся, используя QRegExp("\"([^\"]*)\""), которые соответствуют только двум последовательным кавычкам в одной строке (в данном случае "Тестовое задание").

Кто-нибудь может мне с этим помочь?

1 ответ

Я ничего не знаю о Qt, но из того, что я прочитал, QRegExp довольно ограничен в том, что он может делать, и такие вещи, как символы подстановки, могут быть проблематичными. Если возможно, используйте класс QRegularExpression. Я считаю, что следующее будет делать то, что вы хотите, но, вероятно, не с QRegExp. Это будет работать в Perl-подобных движках RegExp:

echo\s+["']((?:[^"']|["'](?!\s*>))+)["']

Для этого нужно выполнить поиск "echo", за которым должен быть хотя бы один пробел, а затем сопоставить " или же ' (Я предполагаю, что можно использовать любой из них), за которым следует что-либо, кроме кавычек, или что-либо, что не является кавычкой >, по крайней мере, один раз и столько раз, сколько это возможно, а затем он соответствует закрывающей кавычке.

Важно понимать, что движку регулярных выражений нужен какой-то способ отличить начальную цитату и конечную. Я предположил, что стартовой цитате всегда предшествует echo и за конечной цитатой всегда следует >, Возможно, вам придется настроить вещи, если эти предположения неверны.

Другие вопросы по тегам