【问题标题】:Regex to capture groups from STEP正则表达式从 STEP 捕获组
【发布时间】:2020-09-09 07:25:25
【问题描述】:

我得到了用 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

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

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

感谢您的帮助。

【问题讨论】:

标签: regex step


【解决方案1】:

你可能会使用

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

说明

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

Regex demo

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2018-09-08
    • 2021-06-01
    相关资源
    最近更新 更多