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

使用Java从Wolfram Alpha检索的结果中提取所需的子字符串,java,regex,wolframalpha,Java,Regex,Wolframalpha,我正在开发一个Java程序,它接受用户的问题,将其发送到Wolfram Alpha API,然后清理结果并打印出来 如果用户问“谁是美国总统?”的问题,结果如下 Response: <section><title>Input interpretation</title> <sectioncontents>United States | President</sectioncontents></section><s

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

如果用户问“谁是美国总统?”的问题,结果如下

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

如何修剪结果的其余部分?

响应本质上是XML


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

响应本质上是XML


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

如果有帮助,我提出了以下正则表达式:

Result.+?>([^<]+?)<
Result.+?>([^and<)之间至少有一个字符

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

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);
String response=“response:…”

Pattern=Pattern.compile(“Result.+?>([^好吧,如果有帮助的话,我想出了这个正则表达式:

Result.+?>([^<]+?)<
Result.+?>([^and<)之间至少有一个字符

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

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);
String response=“response:…”

Pattern=Pattern.compile(“结果+?>([^Hi谢谢你的回复,但是你如何将这个正则表达式应用到我的代码中呢?我正在努力理解其中的逻辑。@JEarls添加了一些可能会有所帮助的示例代码。除此之外,我建议阅读……对不起……阅读模式和匹配器类的方法:这段代码工作了,完全符合我的要求。谢谢@shrugHi than谢谢你的回复,但是你会如何将这个正则表达式应用到我的代码中呢?我正在努力理解它的逻辑。@JEarls添加了一些可能有用的示例代码。除此之外,我建议阅读……对不起……阅读模式和匹配器类的方法:这段代码工作了,完全符合我的要求。谢谢@shrug