0

我正在寻找一些帮助来将一个 REGEX 表达式放在一起,它将返回 ROUTINE 和 END_ROUTINE 之间的内容

我努力了

ROUTINE S[0-9]{1,5}_[A-Z0-9_]* ([\s\S]*)?(?=END_ROUTINE

)

但它似乎没有提供正确的输出

        ROUTINE S7026_HMI_LB0_SP_MAX 
            RC: "===================================================================================================$N"
                "$N"
                "Local HMI Station B Setpoint Commands Max Clamp$N"
                "$N"
                "===================================================================================================";
            N: NOP();
    END_ROUTINE

    ROUTINE S0100_DIAGNOSTICS 
            N: JSR(S0101_PLC_Diagnostics,0);
            N: JSR(S0102_IO_Diagnostics,0);
    END_ROUTINE
4

1 回答 1

0

添加修饰符U使其变得不贪婪就足够了。

/ROUTINE(.+)END_ROUTINE/sU

(你可以在这里测试它:https ://regex101.com/r/U2MM6G/1 )

或者,您也可以更具体地执行此操作:

/ROUTINE(.+?)END_ROUTINE/s

于 2021-07-25T23:44:19.410 回答