【问题标题】:How do I replace an actual asterisk character (*) in a Regex expression?如何替换正则表达式中的实际星号字符 (*)?
【发布时间】:2011-02-17 14:18:28
【问题描述】:

我有一个声明:

我有一个字符串,比如

content = "*   test    *"

我想搜索并替换它,所以当我完成后,字符串包含以下内容:

content = "(*)   test    (*)"

我的代码是:

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

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

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

【问题讨论】:

    标签: c# regex search replace


    【解决方案1】:

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

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

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

    另见

    【讨论】:

      【解决方案2】:

      你可以逃脱它:

      \*

      【讨论】:

      • 另外,如果您正在编写正则表达式,请考虑使用工具。 Expresso 帮助了我很多:ultrapico.com/Expresso.htm
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        使用Regex.Escape() 它将获取所有字符串并将其制成您可以用作正则表达式的一部分的内容。

        【讨论】:

          【解决方案5】:

          在 regex.replace 调用中使用 \\* 而不是 *

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多