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

标签 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”不再被识别为deviceId,而“123”则未被识别为deviceId。 (我已经使用在线工具检查了我的正则表达式以检查其是否有效)

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

最佳答案

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

但是您可以定义一个正则表达式字符串并进行显式编译:

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

确保使用\\而不是\,因为Java / Groovy字符串使用\作为诸如\n ...之类的基音字符的开头。

在您的代码中使用
var devIdRegEx = Pattern.compile([loaded regexes.deviceId property]);
...

关于regex - Grails-从外部属性文件中读取正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31879000/

相关文章:

JavaScript 对象文字长度 === 未定义?

security - 如何加密/解密 Grails 域类中的列?

java - 我应该为 java/grails 项目使用哪个 StatsD 客户端?

javascript - ASP.NET 潜在的危险请求 Javascript 正则表达式

Java字符串匹配和replaceAll的区别在于匹配括号

grails - 如何配置 db-reverse-engineer 插件

c# - WPF 和 MVVM : How use attached properties in my UserControl

c# - java是否有类似于C#属性的东西?

python - 查找并替换字符串中混淆的单词或短语

Python:按分隔符列表拆分字符串