sql解析大小写正则表达式结束表达式preg_match_all

问题描述:

我尝试从oracle查询解析case-end表达式的内容。我使用下面的正则表达式。

/((?<=case)[\w\s:\=\'\".\,()\<>-]*(?=end)){1}?/gisql解析大小写正则表达式结束表达式preg_match_all

的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

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

           ^^ 

让您*非greedy.See演示。

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