У меня есть строка, как это:Как получить значение из строки с помощью regex?
"text1 <text2> text3"
Я хочу, чтобы захватить только текст в <>
. Поэтому мне нужно получить text2
. Как мне это сделать?
У меня есть строка, как это:Как получить значение из строки с помощью regex?
"text1 <text2> text3"
Я хочу, чтобы захватить только текст в <>
. Поэтому мне нужно получить text2
. Как мне это сделать?
Вы можете сделать это следующим образом:
String value = "text1 <text2> text3 <text4>";
Pattern pattern = Pattern.compile("<([^>]*)>");
Matcher matcher = pattern.matcher(value);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
Выход:
text2
text4
Update Response:
Предполагая, что вы знаете, что у вас есть только одно значение для извлечения, Bohemian предлагает более простой подход, он предлагает продолжить в следующем:
String value = "text1 <text2> text3";
String target = value.replaceAll(".*<(.*)>.*", "$1");
System.out.println(target);
Выход:
text2
вы можете сделать это с помощью меньше кода, чем это ... – Bohemian
It ' s даже не строка, ей нужен только вызов метода: 'String target = value.replaceAll (". * <(.*)>. * "," $ 1 ");'. Меньше кода == меньше ошибок, их легче читать и поддерживать. – Bohemian
вопрос четко спрашивает о получении только одного значения от ввода. Самое простое решение всегда лучшее. – Bohemian
Я предлагаю вам разделить эту строку с помощью «» в качестве разделителя - вы получите 3 -элементы массив, а второй является то, что вы ищете
Обязательная ссылка: [RegEx соответствуют открытым тегам, кроме тегов XHTML) (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Pshemo