我希望能够在SQL语句中找到绑定变量(以冒号开头,然后有文本):
SELECT *
FROM TABLE
WHERE TABLE_UID = :TABUID AND TABLE_TEXT = :TEXT
我发现这个正则表达式可以找到绑定变量:
Regex reg = new Regex(":[\\w]*",
RegexOptions.Multiline & RegexOptions.IgnoreCase);
foreach (Match m in reg.Matches(sql))
{
bindVar.Add(m.Value);
}
我无法弄清楚如何忽略引号中存在的潜在绑定变量:
SELECT *
FROM TABLE
WHERE TABLE_UID = :TABUID AND TABLE_TEXT = TO_DATE(:TEXT, 'hh:mi:ss')
:mi& :ss不应该匹配正则表达式。
答案 0 :(得分:2)
关于使用正则表达式做你想做的事情的智慧,我有点不稳定,但如果我是你,我会
答案 1 :(得分:0)
使用单词边界\ b
\\b:[\\w]*
答案 2 :(得分:0)
这将匹配未用单引号括起来的任何内容:
(?<![\\S'])([^'\\s]+)(?![\\S'])
我不够精明,不知道如何将它与你已经拥有的东西结合起来。