我需要一个正则表达式来查找指定字符串之前和之后的文本

时间:2017-08-24 15:13:09

标签: regex

所以我有一个像这样的查询(忽略这不是一个真正的查询,只是用来得到我的观点)

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)(.*?)(?=\)\))..

2 个答案:

答案 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)

如果您举例说明您希望匹配哪些内容并且不匹配('预期结果'),这会有所帮助。

据我所知,现在基本方法似乎已经足够了:

(AND.*@Param\w+\)\))

Demo