我有以下字符串。为清晰起见,我将其分为两行,但它们是一行。
WHEN NVL(somevar1, 0) > 0 THEN
(CAST(NVL(somevar2, 0) AS
FLOAT(53)) / CAST(NVL(somevar3, 0) AS FLOAT(53))) * 100
我想写一个正则表达式,以便我可以得到somevar1,somevar2和somevar3。
我正在尝试这样的事情:
NVL(.*,)
但这匹配最后一个逗号而不是第一个逗号。
顺便说一句,我在groovy这样做。答案 0 :(得分:5)
了解您正在使用的正则表达式引擎是有帮助的,因为并非所有人都支持非贪婪的量词。
请尝试以下方法之一:
NVL\((.*?),
或
NVL\(([^,]*),
答案 1 :(得分:3)
你的尝试是一个贪婪的正则表达式。试试/NVL\((.*?),/
,结果应该在反向引用1中。
答案 2 :(得分:2)
我使用\w
(或可能是[\w_$]
)代替*
以匹配'字符'(字母,数字)