(Answer revised thoroughly after receiving comments by the OP and by @UlrikeFischer.)
I take it that you want to permit hypenation in the "subwords" both to the left and the right of a compound word joined by a hyphenation character. I further assume that the left-hand subword may end with either a letter or a digit, while the right-hand subword must start with a letter. Examples of such hyphenated compound words are EPR-Spektroskopie, Baden-Württemberg and T1-Schriften. If using LuaLaTeX instead of pdfLaTeX is an option for you, it is straightforward to set up a Lua function that performs the conversion of - to "= and, conversely, of "= to - on the fly.
As you've requested, "= can -- in fact, it must -- be used for instances of hyphens that must be treated as "ordinary" hyphens, i.e., which must not be converted to "= for typesetting purposes. Suppose, for instance, that the siunitx package is loaded and that the document contains the sequence
\SI[per-mode=symbol, tight-spacing]{4e-3}{\meter\per\second}
Observe that this sequence contains three instances of -: between "per" and "mode", between "tight" and "spacing", and betweeh 4e and 3. To make LaTeX treat the first two instances of - as ordinary hyphenation characters, you must input this sequence as
\SI[per"=mode=symbol,tight"=spacing]{4e-3}{\meter\per\second}
It is not necessary to replace the third instance of - (in 4e-3) with "=. Why not? Because the - character is not followed by a letter. Thus, the Lua function doesn't operate on 4e-3 to begin with.
The code provided below also features LaTeX macros -- named \ConvertDashOn and \ConvertDashOff -- to switch the Lua function on and off. (The default state is "on".) Being able to switch off the Lua function is useful -- crucial, in fact -- if your document contains verbatim-like material and/or code listings. For such material, it would not be desirable to have "= show up in the typeset output instead of -, right?
In case you're curious how the Lua function works: The function performs several global substitutions using the gsub ("global substitution") function and Lua's capture mechanism. Crucially, the function is assigned to LuaTeX's process_input_buffer callback, meaning that it does its work before TeX starts its normal processing.
Aside: The babel package defines "= as \penalty\@M-\hskip\z@skip. An inspection of this definition reveals that it may be used safely in math mode. Hence, it is not necessary to prevent the substitution of - for "= from happening for math mode material.

% !TEX TS-program = lualatex
\documentclass[ngerman]{article}
\usepackage{fontspec,unicode-math,babel,luacode}
\usepackage{siunitx} % for `\SI[...]{...}{...}` example
%%% Lua-side code
\begin{luacode}
function dash_to_breakable_dash ( s )
s = unicode.utf8.gsub ( s, '(%w)"=(%a)', '%1XYZYX%2' )
s = unicode.utf8.gsub ( s, '(%w)%-(%a)', '%1"=%2' )
s = unicode.utf8.gsub ( s, '(%w)XYZYX(%a)', '%1-%2' )
return s
end
\end{luacode}
%%% TeX-side code
\newcommand\ConvertDashOn{\directlua{
luatexbase.add_to_callback ( "process_input_buffer" ,
dash_to_breakable_dash , "dash_to_breakable_dash" )}}
\newcommand\ConvertDashOff{\directlua{
luatexbase.remove_from_callback ( "process_input_buffer" ,
"dash_to_breakable_dash" )}}
\AtBeginDocument{\ConvertDashOn}
%% Just for this example
\setlength\parindent{0pt}
\usepackage[textwidth=1pt]{geometry}
\begin{document}
\obeylines % also just for this example
\mbox{Lua function switched \emph{on}}
EPR-Spektroskopie Baden-Württemberg T1-Schriften
\mbox{$x-y-z$}
% Replace '-' with '"=' in 'per-mode' and 'tight-spacing',
% but not in '3.5e-6'
\SI[per"=mode=symbol,tight"=spacing]{4e-3}{\meter\per\second}
\bigskip
\mbox{Lua function switched \emph{off}}
\ConvertDashOff
\verb+Raman-Spektrum+
\mbox{$x-y-z$}
EPR-Spektroskopie Baden-Württemberg T1-Schriften
\SI[per-mode=symbol,tight-spacing]{4e-3}{\meter\per\second}
\end{document}