Как заменить группу перехвата на replaceAll () при возврате всей (измененной) строки? - PullRequest
0 голосов
/ 23 января 2019

У меня проблемы с использованием функции replaceAll () правильно.Моя цель - прочитать файл как строковый объект, а затем сделать различные замены в этой строке.Фактически, мой строковый объект - это XML-документ, который я преобразовал в строку, чтобы я мог вносить в него различные изменения.Это грубый метод, поскольку у меня много XML-файлов с различными схемами, и поэтому мое решение состоит в том, чтобы обрабатывать каждый файл как строковый объект, а затем выполнять различные операции поиска / замены этой строки.Я считаю, что этот подход технически подходит для решения проблемы, которую я должен решить.

Инструмент, который я на самом деле использую, это Talend, но это все Java за кулисами, и мой код очень похож на стандартное выражение Java.Вот что я сделал до сих пор:

row1.content.replaceAll("<application (uuid)", "foo")

row1.content - мой строковый объект, который содержит XML.Мое выражение совпадения работает правильно, но оно заменяет все совпадение на foo.Моя цель - заменить только uuid на foo, а не на всю строку.Я уверен, что это очень часто, то есть сопоставление строки с регулярным выражением, а затем только замена подмножества этой строки.Однако в моем случае вся строка заменяется на foo.Я знаю, что вы можете ссылаться на группы захвата, используя $ 1, $ 2 и т. Д., Но я не знаю, как заменить только мою группу захвата.Я пробовал следующий синтаксис, основанный на сообщениях, которые я видел: $ 1foo, $ 1 = foo, $ 1; foo.Однако, это просто печатает всю мою строку с помощью uuidfoo, uuid = foo, uuid; foo, соответственно.

Как уже упоминалось, мне нужно вернуть следующее:

"<application foo"

Это гарантирует, что мойстрока соответствия сохраняется, и заменяется только группа захвата.Кроме того, поскольку это часть гораздо большей строки, мне также нужно сохранить оставшуюся часть строки после того, как это совпадение было заменено правильно.Таким образом, мой строковый объект будет выглядеть следующим образом:

"<application foo blah blah blah...."

Затем я применил бы некоторую другую замену к отдельной части строкового объекта (см. Мое решение выше), и тогда мой окончательный документ XML будет иметь все соответствующиезамена строк сделана до того как я сохраню это.Все это решение позволяет мне маскировать определенные части файла в соответствии с требованиями конфиденциальности данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...