RegEx帮助 - 查找子字符串,除非在特定的单词中

时间:2011-06-24 09:06:13

标签: regex ssms

一位同事正在扫描一个大脚本,寻找子串UAT(不区分大小写)。不幸的是,该脚本包含许多对“评估”的引用,无论是作为整个单词还是作为字段名称的一部分。

什么RegEx搜索模式会返回UAT的匹配项,如以下示例所示?

  • UAT:匹配
  • uat:匹配
  • TheUATServer1:匹配
  • 估价:不匹配
  • ValuationDate:不匹配

非常感谢

尼尔

4 个答案:

答案 0 :(得分:1)

编辑:这个适用于OP的案例。

试试这个词:uat~(ion)

SSMS(和Visual Studio)正则表达式具有不同的负前瞻语法:~(prevent)

如果你想要uat,你可以使用它:<uat>

<>分别代表开头和结尾。

答案 1 :(得分:0)

fgrep -i "uat" FILE | fgrep -i -v "valuation"

有时最简单的工具可以做出惊人的事情。

但你没有指定你拥有的工具,正则表达式的味道(有很多)。你正在寻找的东西可以通过正则表达式来定义(负面外观 - (ahead|behind)),但简单的字符串搜索和否定可以更快。

答案 2 :(得分:0)

你可以试试这个

UAT(?!ion)

这是一个消极的前瞻,可以确保UAT不像ion中那样valuation。我不知道你的工具是否支持这个,以及这个规则是否足够严格以满足你的需求。

您应该激活的是不区分大小写的匹配。

答案 3 :(得分:0)

已编辑为不区分大小写且包含新要求

我认为你想要的正则表达式只是:

[Uu][aA][tT](?![iI][oO][nN])

uat(任何情况)未跟ion(任何情况)