Grails - 从外部属性文件中读取正则表达式

时间:2015-08-07 13:30:50

标签: regex grails properties external

我添加了以下Config.groovy文件添加了一个外部属性文件:

environments {
    production {
        grails.config.locations = ["file:./application-config.properties"]
    }
}

这适用于某些值(例如更改使用的URL),但是我发现正则表达式不能按预期工作。例如,如果我在Config.groovy中有以下内容:

regexes {
    deviceId = ~/\b[1-9][0-9]{6,7}\b/
}

搜索" 1234567"将被解析为deviceId。

但是,如果我添加

regexes.deviceId = ~/\b[1-9][0-9]{2,3}\b/

到我的application-config.properties文件,它会发现有一个更改为" 1234567"不再被认为是一个设备,但是" 123"不是。 (我已经使用在线工具检查了我的正则表达式,以检查它是否有效)

这是为什么? 是否可以在我的application-config.properties文件中包含正则表达式? (我也尝试将正则表达式放在引号中)

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以在属性文件中使用正则表达式运算符~//。 (我不知道为什么不应该这样做!)

但是你可以定义一个正则表达式字符串并将其显式编译:

regexes.deviceId = "\\b[1-9][0-9]{2,3}\\b"

请务必使用\\代替\,因为Java / Groovy字符串使用\作为\n等excape字符的开头。

在您的代码中使用

var devIdRegEx = Pattern.compile([loaded regexes.deviceId property]);
...