用java解析文本
我是高级编程新手, 我知道这是一个很不礼貌的问题:- 我喜欢用java解析文件 e、 g my in.vmf包含:用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对象。并添加一些
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编写的。你想说你不想使用外部框架,是吗?没错。这个解析代码需要嵌入到其他一些项目中,所以我们没有太多空间来使用其他框架/工具。它用于搜索文本中的复杂表达式。