【问题标题】:Do I need positve lookbehind? [duplicate]我需要积极的向后看吗? [复制]
【发布时间】:2021-10-01 23:55:14
【问题描述】:

我正在寻找一些帮助来将一个 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

【问题讨论】:

  • [\s\S]* 必须写成[\s\S]*?

标签: regex regex-lookarounds regex-greedy


【解决方案1】:

添加一个修饰符 U 就足够了。

/ROUTINE(.+)END_ROUTINE/sU

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

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

/ROUTINE(.+?)END_ROUTINE/s

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2018-08-01
    • 2020-12-07
    • 2011-03-20
    • 2020-02-24
    相关资源
    最近更新 更多