如何逃避正则表达式?

时间:2017-12-11 12:18:20

标签: regex go

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

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

我还尝试添加一些引号并使用strconv.Unquote (e.g. strconv.Unquote(+ "https:\/\/ad.doubleclick.net" +) ),但错误输出。

1 个答案:

答案 0 :(得分:3)

使用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