2016-05-06 3 views
-1

У меня есть строка, как это:Как получить значение из строки с помощью regex?

"text1 <text2> text3" 

Я хочу, чтобы захватить только текст в <>. Поэтому мне нужно получить text2. Как мне это сделать?

+0

Обязательная ссылка: [RegEx соответствуют открытым тегам, кроме тегов XHTML) (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Pshemo

ответ

1

Вы можете сделать это следующим образом:

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 
+0

вы можете сделать это с помощью меньше кода, чем это ... – Bohemian

+0

It ' s даже не строка, ей нужен только вызов метода: 'String target = value.replaceAll (". * <(.*)>. * "," $ 1 ");'. Меньше кода == меньше ошибок, их легче читать и поддерживать. – Bohemian

+0

вопрос четко спрашивает о получении только одного значения от ввода. Самое простое решение всегда лучшее. – Bohemian

0

Я предлагаю вам разделить эту строку с помощью «» в качестве разделителя - вы получите 3 -элементы массив, а второй является то, что вы ищете

Смежные вопросы