2015-08-07 3 views
1

Я добавил внешние свойства файла, добавив следующую строку в файл Config.groovy:Grails - читать регулярное выражение из файла свойств

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» не является. (Я проверил мое регулярное выражение с онлайн-инструментом, чтобы проверить его действительность)

Почему это? Можно ли включить регулярное выражение в файл application-config.properties? (Я также попытался поместить регулярное выражение в кавычки)

ответ

0

Я не уверен, что вы можете использовать оператор regex ~// в файле свойств. (Я не знаю причину, почему он не должен!)

Но вы можете определить регулярное выражение строку и скомпилировать его явно:

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

Обязательно используйте \\ вместо \, потому что Java/Groovy строк используйте \ как начало для экзекульный персонаж как \n ....

В вашем использовании кода

var devIdRegEx = Pattern.compile([loaded regexes.deviceId property]); 
... 
Смежные вопросы