Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从带有标记的字符串行中提取变量数据?_Java_Html_Regex - Fatal编程技术网

Java 如何从带有标记的字符串行中提取变量数据?

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>

我正在尝试编写Java代码来访问一个网站,逐行阅读HTML代码,提取某些数据片段,包括一个嵌入式URL以访问另一个网站,并重复该过程100次。 我已经能够使用以下表达式隔离我需要的大部分数据片段:

s.ranking = line.substring(line.indexOf(">")+1, line.length() -7);
但我对以下几行有问题:

<strong>Writer:</strong> Dylan <br/><strong>Producer:</strong> Tom Wilson&nbsp <br/><strong>Released:</strong> July &#039;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&nbsp <br/><strong>Released:</strong> July &#039;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&nbsp 
 July &#039;65, Columbia12 weeks; No. 2