所以我有一个像这样的查询(忽略这不是一个真正的查询,只是用来得到我的观点)
SELECT
[Test1].[Value]
FROM [test1] AS [testing]
JOIN test2 AS testing2 ON [stuff].[mtfID] = [otherstuff].[id]
AND ((ESP_LOC_3].[LOCDescription] = @ParamMTF))
基本上我需要做的就是' @ Param'存在,我需要能够在它之前提取所有内容到' AND'之后到了')。所以关于我的例子,我想要匹配:' AND((ESP_LOC_3)。[LOCDescription] = @ParamMTF))'。
我只能通过以下表达式获得' @ParamMTF)):
(?=@Param)(.*?)(?=\)\))..
答案 0 :(得分:0)
如果你想匹配某些东西的不存在,你将不得不写相当复杂的REGEX。您的要求可以解释为
'AND(('后跟没有'AND'后跟'@Param'后跟')''
正如您所知,使用REGEX检查no AND
部分非常复杂,而REGEX不是最好的方法。
如果我们将其解释为
,我们可以使用另一种可能做类似但不完全相同的REGEX'AND(('后跟'@Param'后跟'))'
为此,您可以使用下面的简单正则表达式
AND\s*\(\(.*?@Param.*?\)\)
.*? - matches any text in a non greedy fashion
答案 1 :(得分:0)