【发布时间】:2021-08-31 14:13:14
【问题描述】:
我有一个这样的字符串:
Select a, CASE
WHEN 1
THEN
CASE some text
WHEN 2 THEN A
END
END
我想用'CASE var WHEN' 替换每个'CASE (any non space) WHEN'
'CASE WHEN'(两个单词之间只有空格),应该不受影响。
对于前面的例子,它应该是这样的:
Select a, CASE
WHEN 1
THEN
CASE var
WHEN 2 THEN A
END
END
试过这个:
string.replaceAll("CASE\\s*(.*\\S.*?)\\s*WHEN", "CASE var WHEN")
它在大多数情况下都有效,但当“CASE WHEN”(之间有空格)后跟另一个 CASE WHEN 时会失败。它用 var 替换第一个 CASE 和最后一个 WHEN 之间的所有内容,这不是我想要的。
对于前面的例子,它给出了:
Select a, CASE
var
WHEN 2 THEN A
END
END
有什么想法吗?
【问题讨论】: