Я пытаюсь извлечь некоторую информацию из файла, который имеет следующее содержание:Perl Regexp Извлечение строки из вложенных скобок
field {
a:"bb"
c:"dd"
field_param {
x:"xx"
y:"yy"
}
other_param {
z:"ee"
}
abc_param {
x: { abc: "value"; cfg:"value"}
ze: "value"
}
}
field {
a:"bb"
c:"dd"
field_param {
x:"xx"
y:"yy"
}
others_param {
z:"ee"
}
}
Есть более fields
, как и выше, в текстовом файле. Не все fields
имеют одинаковый формат, некоторые имеют разные параметры.
Я пытаюсь извлечь для каждого field
, чтобы рассматривать его как объект с переменными и значениями. Проблема заключается в вложенном {} . Я не знаю, как извлечь значения между {} после разделения всего файла на fields
. Я принимаю, чем field
field
, но он не работает, чтобы извлечь вещи, которые находятся между скобками, если я хочу сделать это рекурсивно.
До сих пор я сделал что-то вроде:
open(FILE,"myfile.txt")
while(<FILE>)
{
$text .=$_;
}
close(FILE)
my @fields= split /fields/,$text;
for my $field(@fields)
{
my($extracted,$remainder)=extracted_bracketed($field,'{}');
}
Но это извлекает только то, что находится в поле. Я хочу сделать это как-то рекурсивным.
У кого-нибудь есть идеи?
У вас возникла проблема с вашим парсером? Какая проблема? Где ваш код? – ikegami
Я бы предложил _not_ использовать что-то похожее на JSON, но это не так. Это противно. В противном случае я бы посоветовал вам подробно остановиться на проблеме, с которой вы сталкиваетесь. Поскольку у вас рекурсивная структура данных, вам может понадобиться рекурсивный синтаксический анализатор. – Sobrique