Как заменить фактический символ звездочки (*) в выражении Regex?

У меня есть утверждение:

У меня есть строка, например

content = "*   test    *"

Я хочу найти и заменить его так, когда я закончил, строка содержит следующее:

content = "(*)   test    (*)"

Мой код:

content = Regex.Replace(content, "*", "(*)");

Но это вызывает ошибку в С#, потому что он считает, что * является частью синтаксиса регулярных выражений.

Как мне изменить этот код, чтобы он менял все звездочки в моей строке на (*) вместо того, чтобы вызывать ошибку выполнения?

Ответ 1

Так как * является метасимволом регулярного выражения, когда вам это нужно как буквальная звездочка вне определения класса символа, его нужно экранировать с помощью \ до \*.

В С# вы можете записать это как "\\*" или @"\*".

С# также должен иметь метод "цитирования" общего назначения, чтобы вы могли процитировать произвольную строку и сопоставить ее как литерал.

См. также

Ответ 2

Вы можете избежать этого:

\*

Ответ 3

Вам не нужно регулярное выражение в этом простом сценарии. Вы можете использовать String.Replace:

content = content.Replace("*", "(*)");

Ответ 4

Используйте \\* вместо * в вызове regex.replace

Ответ 5

Использовать Regex.Escape() Это займет всю строку и превратит ее во что-то, что вы можете использовать как часть регулярного выражения.