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

gfttwv5a  于 2022-11-26  发布在  .NET
关注(0)|答案(1)|浏览(85)

我正在使用
正则表达式:(?<!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#中更正此正则表达式或使用其他方法解决此问题?

aiqt4smr

aiqt4smr1#

您可以使用

(?<!WHEN\s+)EMP_ID

或者,使用全字匹配:

\b(?<!\bWHEN\s+)EMP_ID\b

请参阅.NET regex demo
由于.NET正则表达式风格允许在lookbehind中使用未知长度模式,因此(?<!WHEN\s+)可以工作,并且使任何前面紧跟WHEN +一个或多个空格的位置失败。

相关问题