Regexp и golang

Всем привет.

Столкнулся с неприятной проблемой: В проекте оказалось необходимо хранить некоторое количество настроек в внешнем файле, я выбрал json так как поддержка такого формата есть из коробки. И всё шло хорошо, но до тех пор, пока в этих настройках не понадобилось хранить и периодически менять регулярное выражение. Теперь при попытках получить значения переменных из json'ов выдаёт ошибку "invalid character '.' in string escape code".

Код чтения json ниже:

func GetSettings() settings {
    file, err := os.Open("conf/settings.json")
    if err != nil {
        log.Panic(err)
    }
    defer file.Close()
    decoder := json.NewDecoder(file)
    settings := settings{}
    err = decoder.Decode(&settings)
    if err != nil {
        log.Panic(err)
    }
    return settings
}

Само выражение:

^([a-zA-Z0-9\.\_\-\']{2,128})(@iccmiu\.online)$

JSON такого вида:

{
   "Emails": [
     {
       "Type": "iccmiu",
       "Regexp": "^([a-zA-Z0-9\.\_\-\']{2,128})(@iccmiu\.online)$"
     }
     {
       "Type": "gohryt",
       "Regexp": "^([a-zA-Z0-9\.\_\-\']{2,128})(@gohryt\.online)$"
     }
 ]
}

Ответы (1 шт):

Автор решения: Gohryt

Решение найдено благодаря комментаторам. Нужно экранировать экранирующие слеши, то есть вместо одного слеша ставить 2.

→ Ссылка