I think something like: /filter -xg in.txt out.txt ^(;|((\t|\x20)*;)|$) will do what you want.
Also a note, when you said like (space)(space)(...); and (tab)(tab)(...); I also assumed you meant things like (space)(tab)(tab)(space)(...); to be ignored too. That regex should ignore any line that starts with any combination of tabs and spaces followed by a ; as well as blank lines and lines that start with a ; hope thats what you wanted