我正在处理一个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解析器。