The read()
call consumes all input until EOF into a single string. While you then could split it on newlines, it's probably better to just read one line at a time.
for line in sys.stdin:
print(re.findall(r'[-\d()+*/.]', line))
Notice also the r'...'
raw string to pass backslashes through to the regex engine. However, there is no need to backslash-escape dots, curly parenteses etc inside a [...]
character class.
The problem with reading everything into a single string is that you are unnecessarily keeping potentially large amounts of data in memory. Your loop body only needs to see one line at a time; don't keep more than that in memory at any one time. (You could still in theory exhaust your RAM by reading a really long single line, but this is considered obscure enough to not worry many people in actual practice.)