如何在Regex表达式中替换实际的星号(*)?

时间:2010-05-10 09:22:10

标签: c# regex search replace

我有一个声明:

我有一个字符串,如

content = "*   test    *"

我想搜索并替换它,所以当我完成时,字符串包含这个:

content = "(*)   test    (*)"

我的代码是:

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

但这会导致C#出错,因为它认为*是正则表达式语法的一部分。

如何修改此代码,以便将字符串中的所有星号更改为(*)而不会导致运行时错误?

5 个答案:

答案 0 :(得分:30)

由于*是正则表达式元字符,因此当您需要将其作为字符类定义之外的文字星号时,需要使用\转义为\*

在C#中,您可以将其写为"\\*"@"\*"

C#还应该有一个通用的“引用”方法,以便您可以引用任意字符串并将其作为文字匹配。

另见

答案 1 :(得分:10)

你可以逃脱它:

\*

答案 2 :(得分:10)

在这个简单的场景中,您不需要正则表达式。您可以使用String.Replace:

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

答案 3 :(得分:4)

在regex.replace调用中使用\\*代替*

答案 4 :(得分:4)

使用Regex.Escape()它将占用所有字符串,并将其作为正则表达式的一部分使用。