c# - 使用 .NET 正则表达式匹配前面没有单词的特定字符串和任意数量的空格

标签 c# regex regex-lookarounds regex-group

我正在使用

正则表达式:(?<!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/

相关文章:

正则表达式匹配优先级(前视和后视正则表达式)

c# - 对象等于 - 不覆盖等于的纯对象或引用类型的基本逻辑是什么?

JavaScript/正则表达式 : Delete a specific Text (word) starting with a specific letter inside a String with words separated by spaces

c# - Blazor WA 托管 - Azure AppService 上的 401 未经授权

c# - 查找/编辑文件中的确切条目

java - 结合积极的后瞻和前瞻

php - 如何在正则表达式的环视中匹配多个(N)空格?

java - 正则表达式在捕获之前仅与两个相似的 URL 进行非常具体的匹配

c# - 如何使用托管标识从 Visual Studio 运行 EF6 代码优先迁移

c# - 如何在 Windows Phone 8 中访问 UserControl 的组件/元素