regex - 如何取消转义转义的正则表达式?

标签 regex go

我正在寻找 regexp.QuoteMeta 的反面. 有这样的功能吗?

我尝试使用 strings.Replace("\", "", -1) 手动取消转义,但这很容易出错/不可靠,因为它在所有案例(即过度转义或 unicode)。

我还尝试添加一些引号并使用 strconv.Unquote (例如 strconv.Unquote("+ "https:\/\/ad.doubleclick.net"+") ) 但它出错了.

最佳答案

regexp/syntax 解析字符串包获取不带引号的字符串:

func unquoteMeta(s string) (string, error) {
    r, err := syntax.Parse(s), 0)
    if err != nil {
        return "", err
    }
    if r.Op != syntax.OpLiteral {
        return "", errors.New("not a quoted meta")
    }
    return string(r.Rune), nil
}

playground example

关于regex - 如何取消转义转义的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47752821/

相关文章:

hash - 如何在 Go 中获取十六进制编码的 md5 哈希

go - 事情发生的顺序是什么?

go - 如何设置多值 HTTP header ,例如 Content-Security-Policy?

go - 在结构上使用 interface{} 来检查它是否满足 golang 中的接口(interface)

Java System.getProperty ("line.separator") 在 apache 服务器中不工作

Java 在忽略括号之间的任何定界符的同时拆分字符串

用于 XLSX 文件扩展名的 Java 正则表达式

regex - 如何在 linux/unix 中删除文件中特定行中间的逗号

去新手: Getting "mismatched types *int and int" error when trying to compare reference to static integer

regex - .htaccess SetEnvIfNoCase 主机排除特定子域