Разобрать строку, чтобы получить необходимый контент - PullRequest
0 голосов
/ 12 ноября 2011
<lst name="responseHeader"><int name="status">0</int><int name="T">2</int><lst name="params"><str name="echoParams">all</str><str name="Params">all</str>solrpingquery<str name="ty">standard</str></lst></lst><str name="status">OK</str>

Над строкой, которую я хочу проанализировать, и я хочу извлечь OK из вышеуказанной строки.Значит из этой ниже конкретной строки я хочу извлечь OK . ОК может быть любым, не обязательно, чтобы статус был ОК .

<str name="status">OK</str>

Какой быстрый способ сделать это.

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Похоже на действительный XML, поэтому я бы предложил парсер XML (трудно сказать, какой именно, так как вы не сказали, какой язык вы используете).

Подход регулярного выражения может выглядеть как

<str name="status">(.*?)</str>

или

<str name="status">([^<>]*)</str>

Но вам все равно нужно указать, какой язык вы используете, чтобы я мог настроить регулярное выражение в соответствии с его потребностями. И есть несколько проблем с попыткой сопоставить (X) ML с регулярными выражениями, так что это может не всегда работать как хотелось бы. Пока между тегом есть только нормальный текст, все должно быть в порядке.

В Java:

Pattern regex = Pattern.compile("<str name=\"status\">(.*?)</str>");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
} 
0 голосов
/ 12 ноября 2011

Я должен признать, что я против XML и против регулярных выражений, когда это излишне. Как насчет

static final String SEARCH_STRING = "<str name=\"status\">";

тогда где-то

int idx1 = theString.indexOf(SEARCH_STRING );
int idx2 = theString.indexOf("<", idx1+1 );
// verify that both are >= 0;
String result = theString.substring(idx1 +SEARCH_STRING.length(), idx2);

ПРИМЕЧАНИЕ. - Я почти уверен, что где-то в этом коде есть ошибка отключения на 1, поэтому проверьте ее.

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