假设下面的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 在单引号之间。 ..
我试图修改正则表达式,但似乎没有任何效果。我该怎么办?
答案 0 :(得分:2)