我正在使用
正则表达式:(?<!WHEN\s)EMP_ID
查询:SELECT EMP_ID, CASE WHEN EMP_ID > 115 THEN 'greater' WHEN EMP_ID < 115 THEN 'lower' END AS TEST
匹配项:1 个匹配项 (EMP_ID)
但是如果我在此查询中的 WHEN 之后添加任何空格,那么它将显示 2 个匹配的“EMP_ID”,这是错误的。 或者,如果我在查询中使用 where 条件并使用此列名,那么它也会给我 2 个匹配的列名。
如何更正此正则表达式或使用不同的方法在 C# 中解决此问题?
最佳答案
你可以使用
(?<!WHEN\s+)EMP_ID
或者,使用全词匹配:
\b(?<!\bWHEN\s+)EMP_ID\b
参见 .NET regex demo .
由于 .NET 正则表达式风格允许在回顾中使用未知长度模式,(?<!WHEN\s+)
在紧接 WHEN
之前的任何位置工作并失败+ 一个或多个空格。
关于c# - 使用 .NET 正则表达式匹配前面没有单词的特定字符串和任意数量的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74517710/