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



我正在处理一个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

我想提取"巴拉克·奥巴马(从2009年20月20日到现在)"

我已经能够使用以下代码来修剪Barack:

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

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

好吧,如果它有帮助,我想到了这个正则:

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

找到"结果"后,它捕获了> and&lt;它们之间至少有一个字符。

更新以下是一些可能有帮助的示例代码:

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);

响应本质上是xml。

正如许多编程Fora中无休止地讨论的那样,正则表达式不适合解析XML-您应该使用XML解析器。

相关内容

  • 没有找到相关文章

最新更新