Я ищу идеи о том, как хранить и как использовать строки регулярных выражений из файла свойств, чтобы делать замены в тексте.
Вот подробности:
У меня есть файл свойств, в котором я хочу сохранить регулярное выражение. Я думаю, что это будет примерно так:
regex.replace.separator = ~
regex.replace = abc~xyz
regex.replace = <a\s.*></a>~<removed>
regex.replace = (?:x)(abc)~xyz
regex.replace = (<a[^>]*href=")[^"]*("[^>]*>)~$1#$2
~
- разделитель между regEx и строкой замены. Мне не нравится такой подход, но это то, что я придумал. Очевидно, что если regEx содержит ~
, тогда мне нужно будет найти другой разделитель.
В Java-коде я прочитаю файл свойств и создам HashMap<String, String>
(я разделю на regex.replace.separator). Затем у меня много файлов для обработки, и я хочу сделать текстовые замены, основанные на регулярном выражении HashMap. Например:
String fileContent = ... get file content...
for (String regEx : hashMap.keySet()) {
String newContent = Pattern.compile(regEx).matcher(fileContent).replaceAll(hashMap.get(regEx))
}
1) Как лучше всего хранить эти регулярные выражения? Любой другой, более эффективный способ? Я ограничен структурой файлов свойств, так как это будет частью более крупного файла свойств, который настраивает приложение.
2) Я обеспокоен тем, что этот метод не сможет обрабатывать сложные regEx с поиском обходов, группами и т. Д. Мысли?