用于从 STEP 捕获组的正则表达式

Regex to capture groups from STEP

我得到了用EXPRESS写的STEP文件(可以读成文本)

文件看起来像:

#14(REPRESENTATION_RELATIONSHIP($,$,#293,#291)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#12)SHAPE_REPRESENTATION_RELATIONSHIP());
#35=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',#180,888.125521);
#25=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#29),#277);
#186=AXIS2_PLACEMENT_3D('',#270,#230,#231);

我想使用正则表达式来得到类似的东西:

Match: REPRESENTATION_RELATIONSHIP($,$,#293,#291); Group1: REPRESENTATION_RELATIONSHIP; Group2: $,$,#293,#291
Match: ADVANCED_BREP_SHAPE_REPRESENTATION('',(#29),#277); Group1: ADVANCED_BREP_SHAPE_REPRESENTATION; Group2: '',(#29),#277

我是正则表达式的新手,想出了这个模式: (\b[A-Z\d]*[_[A-Z\d]*]*)(\((.*?)\))

有点用,但例如只会匹配:ADVANCED_BREP_SHAPE_REPRESENTATION('',(#29) 而不是 ADVANCED_BREP_SHAPE_REPRESENTATION('',(#29),#277)

感谢您的帮助。

您可能会使用

#\d+[(=](\w+)\((.*?)\)[;A-Z]

说明

  • #\d+[(=] 匹配 #,1+ 位和 (=
  • (\w+) 捕获组 1,匹配 1+ 个单词字符
  • \( 匹配 (
  • (.*?)捕获组2,尽可能少的匹配任何字符
  • \)[;A-Z] 匹配 ) 后跟 ; 或字符 A-Z

Regex demo