使用DateTime字符串提取查询参数的正则表达式失败

时间:2015-04-29 02:23:32

标签: java regex

假设下面的SQL命令:

update [TABLE] set [value] = 'UserName' where key1 = :param1 and key2 = :param2

我想从SQL中提取:param1:param2。所以,我使用以下正则表达式来匹配SQL字符串:

:([\w.$]+|"[^"]+"|'[^']+')

当SQL字符串在引号(“)或单引号(')之间包含冒号(:)时,此工作正常,外。

例如,我希望正则表达式匹配器仅将:param1:param2返回给以下查询:

 update [TABLE] set [value] = ':UserName' where key1 = :param1 and key2 = :param2
 update [TABLE] set [value] = 'User=:UserName' where key1 = :param1 and key2 = :param2
 update [TABLE] set [value] = '2015-04-26 21:59:24' where key1 = :param1 and key2 = :param2

因为值:UserName User =:UserName 2015-04-26 21:59:24 在单引号之间。 ..

我试图修改正则表达式,但似乎没有任何效果。我该怎么办?

1 个答案:

答案 0 :(得分:2)

/'.*?'|(:[^\b]+?\b)/g

您的结果将在第1组(匹配)中。

Demo of this regex

编辑:根据下面讨论的奇怪:          /'.*'|?(?:\ B + \ B)/克