API синтаксического анализатора (который мне не разрешено изменять) дает мне строку этого вида:
var1 var2 \
var2continued var2continued \\\
var2continued
var3
var3continued \
var3continued
Я хочу разделить эту строку с помощью регулярных выражений так, чтобы:
$1 = "var1";
$2 = "var2
var2continued var2continued \\
var2continued"
$3 = "var3
var3continued \
var3continued"
По сути, первая переменная - это первое непробельное слово после 1 или более пробелов и заканчивается при обнаружении пробела.
Вторая переменная начинается с первого непробельного символа после первой переменной до конца строки. Если последним символом является «\», добавьте следующую строку ко второй переменной (не обрезайте пробел между последним символом на строке курсора и «\»). «\» не должен захватывать следующую строку, но возвращает оба «\» (без escape). Обрезать только пробел для последней строки.
Третья переменная - это все, что находится после второй переменной.
До сих пор я мог придумать это регулярное выражение, которое работает только с одной строкой для var2 и var3
$my_re = qr/\s+(\S+)\s+(\S+)\s+[\n](.*)/
$text =~ /$my_re/