Как заменить фактический символ звездочки (*) в выражении Regex?
У меня есть утверждение:
У меня есть строка, например
content = "* test *"
Я хочу найти и заменить его так, когда я закончил, строка содержит следующее:
content = "(*) test (*)"
Мой код:
content = Regex.Replace(content, "*", "(*)");
Но это вызывает ошибку в С#, потому что он считает, что * является частью синтаксиса регулярных выражений.
Как мне изменить этот код, чтобы он менял все звездочки в моей строке на (*) вместо того, чтобы вызывать ошибку выполнения?
Ответы
Ответ 1
Так как *
является метасимволом регулярного выражения, когда вам это нужно как буквальная звездочка вне определения класса символа, его нужно экранировать с помощью \
до \*
.
В С# вы можете записать это как "\\*"
или @"\*"
.
С# также должен иметь метод "цитирования" общего назначения, чтобы вы могли процитировать произвольную строку и сопоставить ее как литерал.
См. также
Ответ 2
Вы можете избежать этого:
\*
Ответ 3
Вам не нужно регулярное выражение в этом простом сценарии. Вы можете использовать String.Replace:
content = content.Replace("*", "(*)");
Ответ 4
Используйте \\*
вместо * в вызове regex.replace
Ответ 5
Использовать Regex.Escape()
Это займет всю строку и превратит ее во что-то, что вы можете использовать как часть регулярного выражения.