我有一个声明:
我有一个字符串,如
content = "* test *"
我想搜索并替换它,所以当我完成时,字符串包含这个:
content = "(*) test (*)"
我的代码是:
content = Regex.Replace(content, "*", "(*)");
但这会导致C#出错,因为它认为*是正则表达式语法的一部分。
如何修改此代码,以便将字符串中的所有星号更改为(*)而不会导致运行时错误?
答案 0 :(得分:30)
由于*
是正则表达式元字符,因此当您需要将其作为字符类定义之外的文字星号时,需要使用\
转义为\*
。
在C#中,您可以将其写为"\\*"
或@"\*"
。
C#还应该有一个通用的“引用”方法,以便您可以引用任意字符串并将其作为文字匹配。
答案 1 :(得分:10)
你可以逃脱它:
\*
答案 2 :(得分:10)
在这个简单的场景中,您不需要正则表达式。您可以使用String.Replace:
content = content.Replace("*", "(*)");
答案 3 :(得分:4)
在regex.replace调用中使用\\*
代替*
答案 4 :(得分:4)
使用Regex.Escape()
它将占用所有字符串,并将其作为正则表达式的一部分使用。