Есть ли способ экранировать все метасимволы в строке, кроме "*"?
Вы можете позвонить Regex.Escape(str).Replace("\*", "*").
Regex.Escape(str).Replace("\*", "*")
Если исходная строка содержит \*, это не будет работать должным образом.
\*