找回密码
 加入
搜索
查看: 1575|回复: 3

[AU3基础] 多行正则求助

[复制链接]
发表于 2019-8-3 17:34:07 | 显示全部楼层 |阅读模式
字符串如下
        MODULE
        {
                name = ModuleEnginesFX
                thrustVectorTransformName = thrustTransform
                exhaustDamage = True
                ignitionThreshold = 0.1
                minThrust = 0
                maxThrust = 16
                heatProduction = 150
                fxOffset = 0, 0, 0.01
                localPosition = 0, 0, 0.12
                EngineType = LiquidFuel
                exhaustDamageDistanceOffset = 0.12
                PROPELLANT
                {
                        name = LiquidFuel
                        ratio = 0.9
                        DrawGauge = True
                }
                PROPELLANT
                {
                        name = Oxidizer
                        ratio = 1.1
                }
                atmosphereCurve
                {
                        key = 0 290
                        key = 1 275
                        key = 7 0.001
                }
        }


以上文本中如何获取  

                atmosphereCurve
                {
                        key = 0 290 (目的是能够获取变量 290 并且需要替换为其它数字,且此大括弧内的行数不定)
                        key = 1 275  (目的是能够获取变量 275 并且需要替换)
                        key = 7 0.001
                }


谢谢


发表于 2019-8-3 17:38:15 | 显示全部楼层
StringRegExp($sSource, '(?si)\h*atmosphereCurve.+?}', 1)
 楼主| 发表于 2019-8-3 17:41:12 | 显示全部楼层

这么快?
多谢大神~
发表于 2019-8-3 17:53:33 | 显示全部楼层
dtooboss 发表于 2019-8-3 17:41
这么快?
多谢大神~

不客气
替换 Key0 Key1值示例
Local $sSource = _
                '       MODULE' & @CRLF & _
                '        {' & @CRLF & _
                '                name = ModuleEnginesFX' & @CRLF & _
                '                thrustVectorTransformName = thrustTransform' & @CRLF & _
                '                exhaustDamage = True' & @CRLF & _
                '                ignitionThreshold = 0.1' & @CRLF & _
                '                minThrust = 0' & @CRLF & _
                '                maxThrust = 16' & @CRLF & _
                '                heatProduction = 150' & @CRLF & _
                '                fxOffset = 0, 0, 0.01' & @CRLF & _
                '                localPosition = 0, 0, 0.12' & @CRLF & _
                '                EngineType = LiquidFuel' & @CRLF & _
                '                exhaustDamageDistanceOffset = 0.12' & @CRLF & _
                '                PROPELLANT' & @CRLF & _
                '                {' & @CRLF & _
                '                        name = LiquidFuel' & @CRLF & _
                '                        ratio = 0.9' & @CRLF & _
                '                        DrawGauge = True' & @CRLF & _
                '                }' & @CRLF & _
                '                PROPELLANT' & @CRLF & _
                '                {' & @CRLF & _
                '                        name = Oxidizer' & @CRLF & _
                '                        ratio = 1.1' & @CRLF & _
                '                }' & @CRLF & _
                '                atmosphereCurve' & @CRLF & _
                '                {' & @CRLF & _
                '                        key = 0 290' & @CRLF & _
                '                        key = 1 275' & @CRLF & _
                '                        key = 7 0.001' & @CRLF & _
                '                        key = X VVVV' & @CRLF & _
                '                }' & @CRLF & _
                '        }'
;~ MsgBox(0, '源字符串', $sSource)
Local $v0 = 12345
Local $v1 = 8888.999
Local $sSRERe = StringRegExpReplace($sSource, '(?si)(Key\h*\=\h*0\h+)[\d.]+(.+?\s+Key\h*\=\h*1\h+)[\d.]+', '${1}' & $v0 & '${2}' & $v1)
MsgBox(0, '替换结果', $sSRERe)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 09:22 , Processed in 0.076905 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表