problem z parsowaniem pliku

problem z parsowaniem pliku
RA
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 8 lat
  • Postów:101
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 :

Kopiuj
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

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
1
Kopiuj
$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).


edytowany 1x, ostatnio: dzek69
RA
  • Rejestracja:prawie 19 lat
  • Ostatnio:ponad 8 lat
  • Postów:101
0

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

Kamil

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.