problem z parsowaniem pliku

0

Dobry wieczór wszystkim

piszę, ponieważ walczę z tym już wystarczająco długo by uznać, że jestem zbyt słaby.

parsuję plik grub.cfg w linuksie, interesuje mnie wyciągnięcie z pliku ciągu znaków zaczynających się od "menuentry" a kończących się na "}", przykładowo :

menuentry "Memory test (memtest86+)" {
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos5'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  b936b83a-0503-4a12-807f-12115c37f126
	else
	  search --no-floppy --fs-uuid --set=root b936b83a-0503-4a12-807f-12115c37f126
	fi
	linux16	/boot/memtest86+.bin
}

w całym pliku konfiguracyjnym jest kilka wystąpień różnych wpisów, wspólna część to wyraz początkowy i klamra zamykająca,
proszę o pomoc.

Kamil

1
$regexp = "@menuentry([^}]+)}@s";
var_dump(preg_match_all($regexp, $string_w_ktorym_szukasz, PREG_SET_ORDER));

Nie sprawdzi się jeżeli pomiędzy czymś, co dla Ciebie jest logicznym blokiem, który chcesz wydobyć znajdzie się klamra zamykająca, albo menuentry (tu nie wiem czy się nie sprawdzi, bo nie znam algorytmu działania wyrażeń regularnych aż tak, ale raczej skoro dopasuje jedno menuentry to dojdzie aż do klamry i potem całość nie będzie już drugi raz przeszukiwana).

0

dziekuję Ci serdecznie :) działa w 100 %

Kamil

1 użytkowników online, w tym zalogowanych: 0, gości: 1