用java解析文本

用java解析文本,java,io,file-handling,Java,Io,File Handling,我是高级编程新手, 我知道这是一个很不礼貌的问题:- 我喜欢用java解析文件 e、 g my in.vmf包含: vaps graxxx metagraphic ccccc cccc vvvv vvvv xxx cccc Begin_object "xxx" Translate somethoing anything end Begin_object 我想用以下规则解析上述文件: 如果它找到第一行“vaps-graxx”,它将进行复制/解析,直到找到Begin\u对象。并添加一些

我是高级编程新手, 我知道这是一个很不礼貌的问题:-

我喜欢用java解析文件

e、 g my in.vmf包含:

vaps graxxx
metagraphic  
ccccc cccc
vvvv vvvv
xxx cccc
Begin_object "xxx"
 Translate
 somethoing
 anything
end Begin_object
我想用以下规则解析上述文件:

  • 如果它找到第一行“vaps-graxx”,它将进行复制/解析,直到找到Begin\u对象。并添加一些行
  • 然后搜索其他单词并复制/解析,直到找到某个单词并添加一些行
  • 继续进行其他类似的搜索等
这是我的代码

    BufferedReader FileBuf;

    try{

        // Open the file and read the file
        FileBuf = new BufferedReader(new FileReader("arc.VMF"));


        // Create a new file 
        OutputFile = new PrintWriter(new FileWriter("newarc.VMF"));

        // Start reading file Line by Line 

        while ((LineRead = FileBuf.readLine()) != null) {

            // LineStr = LineRead.split("");

            if (LineRead.isEmpty()) {
                System.out.println("Line is empty");

            }
            if ((LineRead.startsWith("%"))
                    && (LineRead.indexOf("V A P S") > 0)) {
                OutputFile.println(LineRead);
            }
            if (LineRead.indexOf("BEGIN_OBJECT") > 0) {
                    OutputFile.println(LineRead);

                }

.......
.....
....
            }

        FileBuf.close();
        OutputFile.close();
如果有人能给我一些建议,那将是一个很大的帮助。
谢谢

我的建议是使用jflex和cup之类的东西编写解析器(用java或其他语言)

通过这样做,您可以解析文件并指定非常明确的规则

看看这里:还有这里

JFlex:


杯子:

你已经忘记了他们中最宽容的人!我的意思是,当然。是的,但我不太清楚,我已经成功地使用了JFlex/Cup,所以我可以客观、真诚地推荐它;)谢谢,但我只需要使用JavaWell,JFlex、cup和ANTLR都是用java编写的。你想说你不想使用外部框架,是吗?没错。这个解析代码需要嵌入到其他一些项目中,所以我们没有太多空间来使用其他框架/工具。它用于搜索文本中的复杂表达式。