我添加了以下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文件中包含正则表达式? (我也尝试将正则表达式放在引号中)
答案 0 :(得分:0)
我不确定您是否可以在属性文件中使用正则表达式运算符~//
。 (我不知道为什么不应该这样做!)
但是你可以定义一个正则表达式字符串并将其显式编译:
regexes.deviceId = "\\b[1-9][0-9]{2,3}\\b"
请务必使用\\
代替\
,因为Java / Groovy字符串使用\
作为\n
等excape字符的开头。
在您的代码中使用
var devIdRegEx = Pattern.compile([loaded regexes.deviceId property]);
...