使用 Java 从 Wolfram Alpha 检索到的结果中提取所需的子字符串

Extracting required substring from a result retrieved from Wolfram Alpha with Java

我正在开发一个 Java 程序,它接受用户的问题,将其发送到 Wolfram Alpha API,然后清理结果并打印出来。

如果用户提出问题"Who is the President of the USA?",结果如下

Response: <section><title>Input interpretation</title>    <sectioncontents>United States | President</sectioncontents></section><section><title>Result</title><sectioncontents>Barack Obama  (from 20/01/2009  to  present)</sectioncontents></section><section><title>Basic information</title><sectioncontents>official position | President (44th)..........etc

我想提取"Barack Obama (from 20/01/2009 to present)"

我已经能够使用以下代码 trim 达到 Barack:

String clean =response.substring(response.indexOf("Result") + 31 , response.length());
    System.out.println("Response: " + clean);

我会如何 trim 剩下的结果?

响应本质上是 XML。

正如在许多编程论坛中不断讨论的那样,正则表达式不适合解析 XML - 您应该使用 XML 解析器。

好吧,如果有帮助的话,我想出了这个正则表达式:

Result.+?>([^<]+?)<

找到 "Result" 后,它会捕获 > 和 < 的第一个实例,它们之间至少有一个字符。

更新 下面是一些可能有用的示例代码:

String response = "Response: <section><title>..."
Pattern pattern = Pattern.compile("Result.+?>([^<]+?)<");
Matcher match = pattern.matcher(response);
String clean = "";
if (match.find())
    clean = match.group(1);
System.out.println(clean);