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

У меня есть содержимое файла в виде строки в Java.Мне нужно захватить значение кода атрибута, т.е. key.test.text и key.test.text1

 <input type="button" value="<s:message code="key.test.text"  />"
 <input type="button2" value='<s:message code="key.test.text1'  />"

Могут быть пробелы до =, например <input type="button" value = "<s:message code="key.test.text" />"

Я не уверен, какзахватить его с помощью регулярного выражения или строки?

Ответы [ 3 ]

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

Использовать шаблон регулярных выражений

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

Группа захвата # 1 будет возвращать нужную строку для каждого совпадения.


Java-код:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String input = "...";
String regex = "value\\s*=\\s*[\"']<s:message\\s+code\\s*=\\s*[\"']([^\"']+)[\"']\\s*\\/>";

List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile(regex).matcher(input);

while (m.find()) {
  allMatches.add(m.group(1));
}

System.out.println(allMatches);

Testэтот демонстрационный код здесь .

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

По вашей последней потребности за ваш пост и комментарии ниже принятого ответа

    Matcher matcher = Pattern.compile(
            "<s:message.*?code.*?=.*?[\"'](.*?)[\"'].*?>")
            .matcher(content);

    int count = 0;
    while (matcher.find()) {
        System.out.println(matcher.group(1));

        ++count;
    }
0 голосов
/ 19 мая 2018

Вам просто нужно json_encode строки и затем назначить вам значение кнопки, а затем вы можете прочитать его.

Вот еще одно решение.

Первое использование StringEscapeUtils # unescapeHtml4 () (или # unescapeXml () , в зависимости от исходного формата) дляэкранирования в.Затем используйте String # replaceAll () , чтобы избавиться от символов, которые создают проблему. Вы можете получить помощь из диапазона печати ASCII .

Затем отправьте его на кнопкузначение.

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