我必须从不同的CAD系统解析一些STEP文件(ISO-10303-21),并且它们的结构总是不同的。这是可能出现的形式:

#95=STYLED_ITEM('',(#94),#92);
#12 = CARTESIAN_POINT ( 'NONE',  ( 1.213489432997839200,
5.617300827691964000, -7.500000000000001800 ) ) ;
#263 = TEST ( 'Spaces must not be ignored here' ) ;


我以为正则表达式会有所帮助,所以我创建了这个(http://rubular.com/r/EtJ25Hfg77):

(\#\d+)\s*=\s*([A-Z_]+)\s*\(\s*(.*)*\s*\)\s*;


这给了我:

Match 1:
1: #95
2: STYLED_ITEM
3:

Match 2:
1: #12
2: CARTESIAN_POINT
3:

Match 3:
1: #263
2: TEST
3:


因此,前两个小组按预期工作。但我还需要这样的括号内的属性:

Match 1:
1: #95
2: STYLED_ITEM
3: ''
4: (#94)
5: #92

Match 2:
1: #12
2: CARTESIAN_POINT
3: 'NONE'
4: ( 1.213489432997839200, 5.617300827691964000, -7.500000000000001800 )

Match 3:
1: #263
2: TEST
3: 'Spaces must not be ignored here'


请帮助我找到最后一组的正确表达式(此刻为(.*))。

最佳答案

拥有用于非商业用途的AGPL许可证,JSDAI是免费的开放源代码Java工具箱,用于处理STEP文件

http://www.jsdai.net/

BSD许可证始终是免费和开源的,它是生成C ++和python API以及示例STEP文件读取器/写入器的STEPcode项目,其他BRL-CAD,SCView和OpenVSP等开源项目都使用该代码。

www.stepcode.org

OpenCasCade具有C ++,pythonOCC具有python,node-occ具有JavaScript API,用于处理从STEP转换而来的数据,并且它们都是免费和开放源代码。 OCE可在更多平台上运行,并具有更多错误修复

https://github.com/tpaviot/oce

10-07 23:58