Piszę sobie parser plików konfiguracyjnych (rozbudowane INI

Kod
; To jest komentarz
; I to też :)
# To jest inny komentarz
# i to też
[Test] # Sekcja o nazwie Test :D
Nazwa = Wartość
Dwa = Druga wartość; A tu jest komentarz do tej wartości
Trzy = Chcem wyświetlić średnik: \; ale nie mogę \;(; Jak zrobić żeby usuwał tekst po; ale ignorował \;?
[DrugaSekcja]; Sekcja druga!
Tablica[] = 1
Tablica[Dwa] = 2; dwa
; I to też :)
# To jest inny komentarz
# i to też
[Test] # Sekcja o nazwie Test :D
Nazwa = Wartość
Dwa = Druga wartość; A tu jest komentarz do tej wartości
Trzy = Chcem wyświetlić średnik: \; ale nie mogę \;(; Jak zrobić żeby usuwał tekst po; ale ignorował \;?
[DrugaSekcja]; Sekcja druga!
Tablica[] = 1
Tablica[Dwa] = 2; dwa
W sekcji Test elementu Trzy chcem wyświetlić średnik, ale średnik robi za komentarz, więc poprzedzam go znakiem \. Potrzebuje jakiegoś wyrażenia regularnego, które pobierze wszystko do pierwszego ; lub #, ale pominie \; i \#.
Tak jak jest w php $string = "quote \"s\"

Próbuję coś wymyśleć, ale nic nie działa
