自定义解释器-带有正则表达式

问题描述 投票:0回答:1

我打算用正则表达式解析此代码:

IF KNVV -> KDGRP IN( "EK", "ES" )  THEN KNA1-SORTL ="KA"
ELSE KNVV -> KDGRP IN( "EL", "E3", "E5", "E7", "E2", "EF" )  THEN KNA1-SORTL ="IN"
ELSE KNVV -> KDGRP IN( "EX", "EU", "EV", "ET", "EW" )  THEN KNA1-SORTL ="CA"
END

但是我无法生成有效的正则表达式...

[ ]*[a-zA-Z0-9]+[ ]*([a-zA-Z0-9]+)[ ]*\-\>[ ]*([a-zA-Z0-9]+)[ ]*IN[ ]*\([ ]*([a-zA-Z0-9 ]+)+[ ]*\)[ ]*THEN[ ]*([a-zA-Z0-9\-]+)[ ]*\=[ ]*([a-zA-Z0-9\"\,]+)[ ]*

我需要在线验证以及每组以下值:

$1: KNVV
$2: KDGRP
$3: EK,ES
$4: KNA1-SORTL
$5: KA

有没有办法得到这个?

regex interpreter
1个回答
0
投票

虽然无法获得准确的输出EK,ES,但可以获得类似"EK", "ES"的信息。

这里是一个正则表达式,可能会满足您的需求。

(?:IF|ELSE) ([A-Z]+) -> ([A-Z]+) IN\(( (?:"[A-Z0-9]{2}"(?:[, ])*)+)\)(?: +)THEN ([A-Z0-9\-]+) ="([A-Z]+)"

这非常复杂,因此这里是其功能的直观表示。“正则表达式可视化”

此正则表达式将输出

完全匹配IF KNVV -> KDGRP IN( "EK", "ES" ) THEN KNA1-SORTL ="KA"

第1组。KNVV第2组。KDGRP第3组。"EK", "ES"第4组。KNA1-SORTL第5组。KA

您可以测试更多案例at this regex101

© www.soinside.com 2019 - 2024. All rights reserved.