在SQL查询中搜索并替换字符串([TableName]。[ColumnName])

时间:2018-03-28 12:43:48

标签: c# regex

我正在解析SQL查询并将它们转换为特定于域的语言。为此,我正在使用Regex模式匹配。

例如如果匹配TableName.ColumnName(例如Customer.RecordNumber),那么我需要用$1*替换此字符串,如果有另一列(例如Customer.Forename),则{ {1}}等等。

这是我的代码:

$2*

匹配完全匹配的位置,但是当存在类似Dictionary<string, string> FieldsUsed = new Dictionary<string, string>(); string[] words = sql.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); int x = 1; string regPattern = "^" + TableAlias + ".\\w+$"; for (int i = 0; i < words.Length; ++i) { string word = words[i]; Regex regex = new Regex(regPattern, RegexOptions.IgnoreCase); Match match = regex.Match(word); if (match.Success) { string fldNo = "$" + x.ToString() + "*"; if (!FieldsUsed.ContainsKey(match.Value)) { FieldsUsed.Add(match.Value, fldNo); words[i] = fldNo; ++x; } } } 的表达式时,则正则表达式失败。

有人可以指出正确的正则表达式,它会从上述两个场景中提取所需的值(即TableName.FieldName)吗?

0 个答案:

没有答案