in reply to string matching

Because this:

/;FTP*:*/

...says match any line that has a ; followed by FT followed by P or not P followed up with a :. Essentially, you're being too greedy.

Try something like:

/;FTP.*?:.*/

...which says match ;FTP anywhere in the line, followed by anything non-greedily (.*?) up until it finds a : (you have whitespace that the .*? registers), followed by anything, greedy.