使用正则表达式抓取一个字符串

时间:2009-09-28 18:11:10

标签: regex groovy

我有以下字符串。为清晰起见,我将其分为两行,但它们是一行。

    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这样做。

3 个答案:

答案 0 :(得分:5)

了解您正在使用的正则表达式引擎是有帮助的,因为并非所有人都支持非贪婪的量词。

请尝试以下方法之一:

NVL\((.*?),

NVL\(([^,]*),

答案 1 :(得分:3)

你的尝试是一个贪婪的正则表达式。试试/NVL\((.*?),/,结果应该在反向引用1中。

答案 2 :(得分:2)

我使用\w(或可能是[\w_$])代替*以匹配'字符'(字母,数字)