Захватить HTML-тег с атрибутами и значениями? - PullRequest
0 голосов
/ 06 мая 2018

У меня есть полный ввод HTML-файла в виде строки (у меня есть файл) в Java. Текст что-то вроде ниже

Sample input
    Some text........... <s:message code="code1" arguments="${arg1,arg2}" />..
    some text  ........
    some text  ....... <s:message code="code2" 
     />...........

В основном мне нужно заменить весь текст в зависимости от типа кода. Например, если code = code1, замените тег s: message на test1

sample output
    Some text........... test1..
    some text  ........
    some text  ....... test2 ...........

Я не получаю, как захватить полный <s:message >, а затем заменить его другим текстом? Похоже, мне нужно использовать регулярное выражение здесь, но не получается с чего начать?

Обновление: -

code1 и test1 - только примеры, и они могут иметь любое значение. code1 может быть xyz и может быть заменен на abc. Вот почему я хочу захватить все теги сообщений (либо один за другим во время обхода, либо сразу), затем получить код, выполнить некоторую логику и посмотреть, что будет заменяющим значением.

Подход 2: - Есть еще один способ сделать это: у меня есть список кодов в структуре данных. Для каждого кода проверяйте, есть ли в каком-либо вмещающем теге сообщения, захватывайте его и затем обрабатывайте.

1 Ответ

0 голосов
/ 06 мая 2018

Кажется, это XML, и вам лучше использовать синтаксический анализатор, чтобы найти узел и заменить его нужным текстом. Делать это с помощью регулярных выражений - это скорее пробой или неудача (особенно, когда ваши условия повышаются). Но вот решение этой конкретной проблемы:

String regex = '<s:message\\b[^>]*?"code(\\d+)"[^>]*>';

и замените совпадение на test$1:

string = string.replaceAll(regex, "test$1");

Демонстрационная версия

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