sql解析案例结束表达式与正则表达式preg_match_all

时间:2015-05-14 09:38:59

标签: regex preg-match-all

我尝试从oracle查询中解析case-end表达式的内容。我使用以下常规expr。

/((?<=case)[\w\s:\=\'\".\,()\<>-]*(?=end)){1}?/gi

sql部分是: DECODE( SUM( CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END ), 0, 1, SUM( CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END ) ) )* 100, 2 ) store_av,

但是我得到错误的结果,它得到2个或更多的案例结束块。 请看下面。它需要2个案例结束而不是1个人可以提出解决方案吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

((?<=case)[\w\s:\=\'\".\,()\<>-]*?(?=end)){1}?

                                ^^

让你的*非贪婪。请参阅演示。

https://regex101.com/r/mT0iE7/21