Мне нужно разобрать некоторые STEP-файлы (ISO-10303-21) из разных CAD-систем, и они всегда имеют разную структуру. Это формы, которые могут появиться:
#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'
Пожалуйста, помогите мне найти правильное выражение для последней группы (на данный момент (.*)
).