【问题标题】:How can I retrieve a value from string using regex? [duplicate]如何使用正则表达式从字符串中检索值? [复制]
【发布时间】:2016-09-01 11:57:17
【问题描述】:

我有一个这样的字符串:

"text1 <text2> text3"

我只想获取&lt;&gt; 中的文本。所以我需要得到text2。我该怎么做?

【问题讨论】:

标签: java regex


【解决方案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

回复更新:

假设你知道你只有一个值要提取,Bohemian 提出了一种更简单的方法,他建议按照下一个进行:

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

输出:

text2

【讨论】:

  • 你可以用比这更少的代码来做到这一点......
  • 它甚至不是一行,它只需要一个方法调用:String target = value.replaceAll(".*&lt;(.*)&gt;.*", "$1");。更少的代码 == 更少的错误,更易于阅读和维护。
  • 这个问题清楚地询问了从输入中只获取一个值。最简单的解决方案总是最好的。
【解决方案2】:

我建议你使用 " " 作为分隔符来分割这个字符串 - 你会得到 3 个元素数组,第二个是你要找的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 2013-10-14
    • 2015-10-29
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多