QRegExp через несколько строк с кавычками - PullRequest
0 голосов
/ 07 мая 2018

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

echo "#!/bin/bash

VAR="Test"
Script content

" > $SCRIPT

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

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

1 Ответ

0 голосов
/ 08 мая 2018

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

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

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

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

...