1
我开始编写我自己的dxf文件解析器,并且遇到了一个正则表达式问题。请看下面的文本文件(这是一个特别的DXF文件我工作的一个片段):Java:使用正则表达式解析dxf文件
http://www.filedropper.com/test_104
我在阅读本文件作为一个字符串:
String s = FileUtils.readFileToString(file);
然后我想要使用正则表达式来分割这个字符串,所以我得到一个大小为2的字符串数组,第一个元素为LINE实体,第二个为MTEXT实体。我首先想到的是使用:
String[] tokens = s.split("\\s{2,2}0");
的问题,然而,这(你可以自己试一试),是返回:
{"", "\nLINE...", "\nMTEXT...", "\n100...", "\n"}
课程的第一和最后一个字符串可以很容易地从数组中删除,但如果你看一下文本文件,你会看到,在多行文字实体有
" 0"
即四个空格和0。我不想拆就这一不幸。所以我的问题是:我怎么能分析该采用分体式和正则表达式来简单地获得数组:
String[] tokens = {"\nLINE...", "\nMTEXT..."}
你绝对正确。我刚刚注意到,你可以这样做:s.split(“\\ n \\ s \\ s0 \\ n”),因为文件中设置了结束行字符的方式。 –
另一个问题。有没有办法在测试所有dxf实体对象时压缩上面的正则表达式。这个列表可以在这里找到:[链接](http://autodesk.com/techpubs/autocad/acadr14/dxf/entities_section_al_u05_c.htm) –
那么,如果你发现一个很好的分隔像''\\ n \\ s \\ s0 \\ n“'那么我建议你使用它。通常我不使用'split',因为有时几乎不可能构建精确分割的表达式。我倾向于直接使用'Pattern'和'Matcher'对象并检查其他条件的匹配(例如匹配开始某个特定关键字)。我手动粘贴不匹配条件的匹配以获得正确的字符串片段列表。 –