Полагаю, ваша проблема здесь:
(\/S*)(ftp|http|https):\/\/(\w+:\{0,1\}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?
-------
Полагаю, вы хотите сказать, что может быть ":" или нет.Поэтому вам не нужно выходить за скобки, т.е. только :{0,1}
, но это просто :?
Так что я предполагаю, что вы имеете в виду:
(\/S*)(ftp|http|https):\/\/(\w+:?\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?