有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在两个模式匹配之间读写文本

我正在编写一个代码来读取文本文件,并根据模式给出输出 匹配

例如,如果“aa”出现在一个文件中,它应该从那里开始写入 直到它遇到另一个匹配的模式“}”

我已经编写了一个与模式匹配的代码。但它只打印匹配的图案

import java.util.regex.*;
import java.io.*;

public class Reader {
public static void main(String[] args) throws          ParserConfigurationException,             SAXException, IOException {


    File xmlFile = new File("location.txt");
    Reader fileReader = new FileReader(xmlFile);
    BufferedReader bufReader = new BufferedReader(fileReader);

    StringBuilder sb = new StringBuilder();
    String line = bufReader.readLine();
    while( line != null){
        sb.append(line).append("\n");
        line = bufReader.readLine();
    }
    String string = sb.toString();

    //System.out.println(string);

    int indexHello = string.lastIndexOf("aa");
    int indexBye = string.indexOf("}}", indexHello);
    String newString = string.substring(indexHello, indexBye+1);
    System.out.println(newString);}
    bufReader.close();

   }

         }

预期结果应该是这样的

aa(所有内容,直到匹配“}”)……}

更新:不知怎么的,我能在“aa”和“}”之间阅读。现在,我的问题是——aa有各种各样的情况……}我想把它们全部打印出来


共 (1) 个答案

  1. # 1 楼答案

    祝你快乐。我希望你想要的是这个

    static String initiator = "aa";
    static String finalizer = "}}";
    static String target = "aa_Content_}}";
    
    public static void main(String[] args) {
        int statrtIndex = getContentStartIndex(initiator, target);
        int endIndex = getContentEndIndex(finalizer, target);
        String content = target.substring(statrtIndex, endIndex);
        System.out.println(content);
    }
    
    private static int getContentStartIndex(String initiator, String target) {
        return target.indexOf(initiator) + initiator.length();
    }
    
    private static int getContentEndIndex(String finalizer, String target) {
        return target.indexOf(finalizer);
    }
    

    如果对的话,我很高兴。否则,我很抱歉。 我不擅长英语。但我想帮忙。:)

    它在aa,}之间打印