Java 从文件中获取起始字和结束字之间的数据

Java 从文件中获取起始字和结束字之间的数据,java,text,Java,Text,我有产品评论的数据集,我想从该文件的文本和打印文本之间提取文本。我如何提取数据 文件包含以下格式的数据 <review> id <reviewer></reviewer> <start word></end word> </review> id 我的代码是 File file = new File("D://Data/Dataset/unlabeled.review"); FileInputStream f

我有产品评论的数据集,我想从该文件的文本和打印文本之间提取文本。我如何提取数据 文件包含以下格式的数据

<review> id 
<reviewer></reviewer> 
<start word></end word> 
</review>
id
我的代码是

File file = new File("D://Data/Dataset/unlabeled.review");
    FileInputStream fis = new FileInputStream(file);
    byte[] bytes = new byte[(int) file.length()];
    fis.read(bytes);
    fis.close();
    String text = new String(bytes, "UTF-8");
    System.out.println(text.substring(text.indexOf("<start word>"), text.lastIndexOf("</end word>")));
File File=new文件(“D://Data/Dataset/unlabeled.review”);
FileInputStream fis=新的FileInputStream(文件);
byte[]bytes=新字节[(int)file.length()];
fis.读取(字节);
fis.close();
字符串文本=新字符串(字节,“UTF-8”);
System.out.println(text.substring(text.indexOf(“”),text.lastIndexOf(“”));

您的提取代码如下:

    text.substring(text.indexOf("<review_text>"), 
                   text.lastIndexOf("</review_text>"));
text.substring(text.indexOf(“”),
text.lastIndexOf(“”);
此代码有三个问题:

  • indexOf
    lastIndexOf
    方法返回参数字符串某次出现的第一个字符的偏移量。但您需要从“”后的第一个字符中提取

  • 如果存在多个
    “”
    /
    “”
    对,则代码不会提取每对之间的文本

  • 如果没有
    或没有
    ,则调用索引中的一个或两个将返回-1,这将导致
    子字符串中出现异常


  • 用一些代码。。您尝试了什么?例如,请参见