我打算用正则表达式解析此代码:
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
有没有办法得到这个?
虽然无法获得准确的输出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