Java 如何使用正则表达式从字符串中检索值?

Java 如何使用正则表达式从字符串中检索值?,java,regex,Java,Regex,我有这样一个字符串: "text1 <text2> text3" String value = "text1 <text2> text3 <text4>"; Pattern pattern = Pattern.compile("<([^>]*)>"); Matcher matcher = pattern.matcher(value); while (matcher.find()) { System.out.println(match

我有这样一个字符串:

"text1 <text2> text3"
String value = "text1 <text2> text3 <text4>";
Pattern pattern = Pattern.compile("<([^>]*)>");
Matcher matcher = pattern.matcher(value);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}
“text1 text3”

我只想抓取
中的文本。所以我需要得到
text2
。我该怎么做呢?

我建议您使用“”作为分隔符拆分此字符串-您将得到3个元素的数组,第二个元素是您正在寻找的元素

您可以这样做:

"text1 <text2> text3"
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
text2
假设您知道只有一个值可提取,则提出了一种更简单的方法,他建议继续进行下一步:

String value = "text1 <text2> text3";
String target = value.replaceAll(".*<(.*)>.*", "$1");
System.out.println(target);

你可以用更少的代码来完成它……它甚至不是一行,它只需要一个方法调用:
String target=value.replaceAll(“.*.*”,“$1”)。更少的代码==更少的错误,更容易阅读和维护。问题显然是只从输入中获取一个值。最简单的解决方案总是最好的。强制链接: