RegEx找到匹配的唯一出现

时间:2017-10-03 13:21:40

标签: regex

我找到了几个相关的主题: Regular expression - match all words but match unique words only onceget unique regex matcher results (without using maps or lists) 还有其他几个,但我无法得到他们的解决方案来解决我的问题。

我一直在阅读looharounds和backreferences,但我仍然遗漏了一些东西。

我需要搜索几个大型代码库,并找到所有唯一出现的数据源名称或变量。

我尝试了以下正则表达式:

datasource="someDSN"
datasource="anotherDNS"
datasource = "anotherDNS"
datasource="someDSN"

  <cfquery name="qry_getEvent" datasource="#APPLICATION.firstDSN#">
    SELECT * 
    FROM events
    WHERE id = 1
  </cfquery>
  
    <cfquery name="qry_getPlayers" datasource="#APPLICATION.firstDSN#">
    SELECT * 
    FROM players
    WHERE event_id = 1
  </cfquery>
  
    <cfquery name="qry_getLocation" datasource="secondDSN">
    SELECT * 
    FROM locations
    WHERE event_id = 1
  </cfquery>

代码可能很复杂,但基本上它看起来像这样:\

#APPLICATION.firstDSN#
secondDSN

结果应该类似于:

(?!datasource="dsnname1"|datasource="dsnname2")(datasource=\"([^"]*)\")

我发现的唯一半解决方案是多次运行(datasource = \“([^”] *)\“),但每次都在前面加上一个已知值来排除它,例如:

scenario.V.AddRange(scenarioSchema.V.Select(x => new SN() { Distro = x.Distro}));

这有助于我在几分钟内缩小所有DSN名称的范围,但如果我可以自动获得所有不同的结果,那将会变得如此简单。也许这需要添加一些Node.js工作来简化流程

0 个答案:

没有答案