Java 如何从带有标记的字符串行中提取变量数据?
我正在尝试编写Java代码来访问一个网站,逐行阅读HTML代码,提取某些数据片段,包括一个嵌入式URL以访问另一个网站,并重复该过程100次。 我已经能够使用以下表达式隔离我需要的大部分数据片段:Java 如何从带有标记的字符串行中提取变量数据?,java,html,regex,Java,Html,Regex,我正在尝试编写Java代码来访问一个网站,逐行阅读HTML代码,提取某些数据片段,包括一个嵌入式URL以访问另一个网站,并重复该过程100次。 我已经能够使用以下表达式隔离我需要的大部分数据片段: s.ranking = line.substring(line.indexOf(">")+1, line.length() -7); 但我对以下几行有问题: <strong>Writer:</strong> Dylan <br/><strong>
s.ranking = line.substring(line.indexOf(">")+1, line.length() -7);
但我对以下几行有问题:
<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson  <br/><strong>Released:</strong> July '65, Columbia<br/>12 weeks; No. 2</p>
作者:迪伦
制作人:汤姆·威尔逊
发布日期:7月和#039;65,哥伦比亚
12周;第二名
我需要提取并保存写入程序数据(Dylan)。制片人数据(Tom Wilson)和发行日期数据(65年7月)。有些页面将有多个编写器并标记为“编写器:”,有些页面将有多个制作者,标记为“制作者:”:
如何在Java中从上述行中捕获“Dylan”、“Tom Wilson”和“July'65”
多谢各位!
DM最好的方法是使用HTML解析器。但当我读到你的评论时,“我做这件事是为了一门课,我正在学习如何查找、隔离和提取数据。” 您可以做的事情如下:
String producer = "Producer:";
String writer = "Writer:";
String released = "Released:";
String s = "<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson  <br/><strong>Released:</strong> July '65, Columbia<br/>12 weeks; No. 2</p> ";
int writerIndex = s.lastIndexOf(writer);
int producerIndex = s.lastIndexOf(producer);
int realesedIndex = s.lastIndexOf(released);
String writerExtracted = s.substring(writerIndex + writer.length(),
producerIndex).replaceAll("\\<.*?>", "");
System.out.println(writerExtracted);
String producerExtracted = s.substring(
producerIndex + producer.length(), realesedIndex).replaceAll(
"\\<.*?>", "");
System.out.println(producerExtracted);
String releasedExtracted = s.substring(
realesedIndex + released.length(), s.length()).replaceAll(
"\\<.*?>", "");
System.out.println(releasedExtracted);
注意:您可以使用另一个正则表达式去除符号,如'或…您尝试过HTML解析器,如jsoup吗?没有。我不熟悉HTML解析器。我在课堂上做这件事,学习如何查找、隔离和提取数据;不要为此使用正则表达式。使用HTML解析器。可能的重复基于上述注释,我宁愿使用HTML解析器,我只是不知道如何使用。在这个例子中,我如何解释“Producer:”和“Writer:”有时是复数?很简单,像“,”这样的词之间有分隔符吗?或者只是一个空格?
Dylan
Tom Wilson 
July '65, Columbia12 weeks; No. 2