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

У меня есть оператор:

У меня есть строка такой как

content = "*   test    *"

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

content = "(*)   test    (*)"

Мой код:

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

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

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

13
задан John Saunders 10 May 2010 в 22:13
поделиться

5 ответов

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

В C # это можно записать как "\\ *" или @ "\ *" .

В C # также должен быть универсальный метод «цитирования», чтобы вы могли заключить произвольную строку в кавычки и сопоставить ее как литерал.

См. Также

31
ответ дан 1 December 2019 в 17:24
поделиться

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

\ *

10
ответ дан 1 December 2019 в 17:24
поделиться

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

content = content.Replace("*", "(*)");
10
ответ дан 1 December 2019 в 17:24
поделиться

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

4
ответ дан 1 December 2019 в 17:24
поделиться

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

4
ответ дан 1 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: