Od jakiegoś czasu zajmuję się tworzeniem edytora dla ekipy tłumaczącej. Działa on przez przeglądarkę, jest oparty o PHP i bazę MySQL.
Jak do tej pory wszystko szło gładko i wszystko działało bez zarzutu, lecz ostatnio twórcy gry, którą tłumaczymy, wprowadzili kilka nowych funkcji, poszerzających możliwości tłumaczących ją ludzi.
Chodzi tu o sytuację, gdy dany przedmiot czy cokolwiek, co jest do przetłumaczenia, może występować w liczbie mnogiej. W takiej sytuacji po słowie odmienianym stawiamy [f:"liczbamnoga"]. Tyczy się to jedynie słowa, które poprzedza kwadratowy nawias.
Działa to w ten sposób:
"Jest to przykładowy tekst[f:"teksty"] do przetłumaczenia"
Nie będę się rozpisywał na temat działania tego rozwiązania w grze, bo nie o to tu chodzi.
Moim zadaniem jest zrobienie tego samego na stronie internetowej.
Skrypt PHP pobiera z bazy danych wpis, który przykładowo wygląda tak, jak napisałem wyżej.
Chciałbym móc sterować czy wyświetlić liczbę pojedynczą, czy mnogą. Do tej pory napisałem taki "wzór" dla funkcji preg_replace, lecz nie działa (pewnie nawaliłem w nim wiele zbędnych rzeczy lub, co gorsza, napisałem coś zupełnie źle).
/^(.*)(\s?)(\S+)(\[f:")?(.+)("\])?(.*)$/e
Niestety nie potrafię wyjaśnić, dlaczego akurat tak, kierowałem się intuicją

Potrzebuję wzoru, który będzie działał w każdej sytuacji, tzn. nawet jeśli przed i po słowie "tekst" (z przykładu) nie występuje nic, np.:
"tekst[f:"teksty"]" <-- i koniec
Pisząc powyższy wzór chciałem osiągnąć coś takiego:
(dowolny tekst lub jego brak)*(spacja lub jej brak)?(tekst bez spacji)(liczba mnoga lub jej brak)(dowolny tekst lub jego brak).
Chciałbym móc wyświetlić "tekst", gdy brak odpowiednio sformatowanego kwadratowego nawiasu lub "teksty", gdy ten występuje. Oczywiście reszta tekstu, czyli "Jest to przykładowy " oraz " do tłumaczenia", powinna pozostać nienaruszona.
Proszę o szybką odpowiedź - tłumacze czekają

Pozdrawiam.